aboutsummaryrefslogtreecommitdiff
path: root/src/user/syscall.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/syscall.c')
-rw-r--r--src/user/syscall.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/user/syscall.c b/src/user/syscall.c
new file mode 100644
index 0000000..3aa0707
--- /dev/null
+++ b/src/user/syscall.c
@@ -0,0 +1,17 @@
+#include "user/syscall.h"
+
+#include <stdint.h>
+
+void __attribute__ ((noinline)) do_syscall(
+ volatile uint32_t id,
+ volatile uint32_t arg)
+{
+ asm volatile("svc #0x04");
+}
+
+#define SYSCALL(id, fn, kernfn, argt) \
+ void fn(argt arg) \
+{ \
+ do_syscall(id, (uint32_t) arg); \
+}
+#include "kern/syscall/syscall_tbl.inc"