summaryrefslogtreecommitdiff
path: root/src/thread/x86_64/syscall_cp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread/x86_64/syscall_cp.s')
-rw-r--r--src/thread/x86_64/syscall_cp.s18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/thread/x86_64/syscall_cp.s b/src/thread/x86_64/syscall_cp.s
index b0363547..788c53cc 100644
--- a/src/thread/x86_64/syscall_cp.s
+++ b/src/thread/x86_64/syscall_cp.s
@@ -2,12 +2,12 @@
.global __syscall_cp_asm
.type __syscall_cp_asm,@function
__syscall_cp_asm:
- lea 1f(%rip),%rax
- mov %rax,8(%rdi)
- mov %rsp,(%rdi)
- mov 16(%rdi),%eax
+
+.global __cp_begin
+__cp_begin:
+ mov (%rdi),%eax
test %eax,%eax
- jnz 2f
+ jnz __cancel
mov %rdi,%r11
mov %rsi,%rax
mov %rdx,%rdi
@@ -17,9 +17,7 @@ __syscall_cp_asm:
mov 8(%rsp),%r8
mov 16(%rsp),%r9
mov %r11,8(%rsp)
-1: syscall
- xor %ecx,%ecx
- mov 8(%rsp),%rdi
- mov %rcx,(%rdi)
+ syscall
+.global __cp_end
+__cp_end:
ret
-2: call __cancel