summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2023-11-14 14:58:20 -0500
committerJakob Kaivo <jkk@ung.org>2023-11-14 14:58:20 -0500
commit83990426c98ed9f75494535b9bb29151f8c3fd08 (patch)
tree2d64e7d4caa52c3160515bc982b8bb6b71ae019b /src
parentc98f1b5e4a651c17c9c5023a2df287c168b54f3c (diff)
use "native" syscall function
Diffstat (limited to 'src')
-rw-r--r--src/__sys.x86-64.s13
-rw-r--r--src/_syscall.h2
2 files changed, 15 insertions, 0 deletions
diff --git a/src/__sys.x86-64.s b/src/__sys.x86-64.s
index e69de29b..89e691db 100644
--- a/src/__sys.x86-64.s
+++ b/src/__sys.x86-64.s
@@ -0,0 +1,13 @@
+.global __syscall
+.type __syscall, %function
+__syscall:
+ mov %rdi, %rax
+ mov %rsi, %rdi
+ mov %rdx, %rsi
+ mov %rcx, %rdx
+ mov %r8, %r10
+ mov %r9, %r8
+ mov 8(%rsp), %r9
+ syscall
+ ret
+ .size __syscall,.-__syscall
diff --git a/src/_syscall.h b/src/_syscall.h
index aa97fadf..805e9d1e 100644
--- a/src/_syscall.h
+++ b/src/_syscall.h
@@ -6,6 +6,8 @@
#include "errno/ENOSYS.h"
#endif
+#define __syscall syscall
+
#define SYSCALL(_name, _type, _err, _a1, _a2, _a3, _a4, _a5, _a6) \
static int _scno = -2; \
if (_scno == -2) { \