overhaul pthread cancellation
[musl] / src / thread / x86_64 / syscall_cp.s
1 .text
2 .global __syscall_cp_asm
3 .type   __syscall_cp_asm,%function
4 __syscall_cp_asm:
5         lea 1f(%rip),%rax
6         mov %rax,8(%rdi)
7         mov %rsp,(%rdi)
8         mov 16(%rdi),%eax
9         test %eax,%eax
10         jnz 2f
11         mov %rsi,%rax
12         mov %rdx,%rdi
13         mov %rcx,%rsi
14         mov %r8,%rdx
15         mov %r9,%r10
16         mov 8(%rsp),%r8
17         mov 16(%rsp),%r9
18 1:      syscall
19         ret
20 2:      xor %edi,%edi
21         mov %rdi,8(%r10)
22         mov %rdi,(%r10)
23         dec %rdi
24         jmp pthread_exit