diff options
Diffstat (limited to 'src/user/syscall.c')
-rw-r--r-- | src/user/syscall.c | 17 |
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" |