summaryrefslogtreecommitdiff
path: root/05/musl-0.6.0/src/syscall.s
blob: 67af41297d1300544b9426d4b88128bf9044abf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# this file is necessary because tcc doesn't like musl's inline-assembly implementation
# of syscall
.global syscall0
.global syscall1
.global syscall2
.global syscall3
.global syscall4
.global syscall5
.global syscall6

syscall0:
syscall1:
syscall2:
syscall3:
syscall4:
syscall5:
syscall6:
	# SysV calling convention:          RDI, RSI, RDX, RCX, R8,  R9, 8(%rsp)
	# Linux syscall calling convention: RAX, RDI, RSI, RDX, R10, R8, R9
	mov %rdi, %rax
	mov %rsi, %rdi
	mov %rdx, %rsi
	mov %rcx, %rdx
	mov %r8, %r10
	mov %r9, %r8
	mov 8(%rsp), %r9
	syscall
	mov %rax, %rdi
	call __syscall_ret
	ret