summaryrefslogblamecommitdiff
path: root/src/thread/x86_64/syscall_cp.s
blob: 4f101716d4ee0cd50461f45a0da6b2edb2be3d4c (plain) (tree)
1
2
3
4
5
6
7
8
9
     






                   
                        
                        
                                  
                 
 

                       
                      
                       
                     






                        
                        
               
         
           

                    
.text
.global __cp_begin
.hidden __cp_begin
.global __cp_end
.hidden __cp_end
.global __cp_cancel
.hidden __cp_cancel
.hidden __cancel
.global __syscall_cp_asm
.hidden __syscall_cp_asm
.type   __syscall_cp_asm,@function
__syscall_cp_asm:

__cp_begin:
	mov (%rdi),%eax
	test %eax,%eax
	jnz __cp_cancel
	mov %rdi,%r11
	mov %rsi,%rax
	mov %rdx,%rdi
	mov %rcx,%rsi
	mov %r8,%rdx
	mov %r9,%r10
	mov 8(%rsp),%r8
	mov 16(%rsp),%r9
	mov %r11,8(%rsp)
	syscall
__cp_end:
	ret
__cp_cancel:
	jmp __cancel