summaryrefslogtreecommitdiff
path: root/05/musl-0.6.0/src/syscall.s
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2022-02-23 22:37:01 -0800
committerpommicket <pommicket@gmail.com>2022-02-23 22:37:01 -0800
commitc75af0c8e5fdf7792081f03ca8a01764953b19a4 (patch)
tree811fcdb32086c0b5b4a41f18031c8fcde65ca4b6 /05/musl-0.6.0/src/syscall.s
parent9bc8a11afeed3569736b89754012e3ca22ee10f6 (diff)
coda
Diffstat (limited to '05/musl-0.6.0/src/syscall.s')
-rw-r--r--05/musl-0.6.0/src/syscall.s30
1 files changed, 30 insertions, 0 deletions
diff --git a/05/musl-0.6.0/src/syscall.s b/05/musl-0.6.0/src/syscall.s
new file mode 100644
index 0000000..67af412
--- /dev/null
+++ b/05/musl-0.6.0/src/syscall.s
@@ -0,0 +1,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