summaryrefslogtreecommitdiff
path: root/src/thread/x86_64/syscall_cp.s
blob: 1894ce191c4dc7f9df3aaf2f9748537e86444343 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
.text
.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
	test %eax,%eax
	jnz 2f
	mov %rsi,%rax
	mov %rdx,%rdi
	mov %rcx,%rsi
	mov %r8,%rdx
	mov %r9,%r10
	mov 8(%rsp),%r8
	mov 16(%rsp),%r9
1:	syscall
	ret
2:	xor %edi,%edi
	mov %rdi,8(%r10)
	mov %rdi,(%r10)
	dec %rdi
	jmp pthread_exit