diff options
author | Ian Moffett <ian@osmora.org> | 2025-09-17 19:21:57 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-09-17 19:21:57 -0400 |
commit | 8e268df60bde6b5548b849cc9b83a224a74b3e43 (patch) | |
tree | bdf63b45702b9f926400dd621571a2ee42aafb4c /src/sys/arch/amd64/cpu/trap.c | |
parent | f90b091a023ba80d1901eab70baf44af03921ace (diff) |
kern: Add syscall entry and SYS_exit syscall
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/sys/arch/amd64/cpu/trap.c')
-rw-r--r-- | src/sys/arch/amd64/cpu/trap.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/sys/arch/amd64/cpu/trap.c b/src/sys/arch/amd64/cpu/trap.c index 046263b..6ddc079 100644 --- a/src/sys/arch/amd64/cpu/trap.c +++ b/src/sys/arch/amd64/cpu/trap.c @@ -36,6 +36,7 @@ #include <sys/cdefs.h> #include <sys/panic.h> #include <sys/syslog.h> +#include <sys/syscall.h> #include <machine/trap.h> /* @@ -146,6 +147,24 @@ trapframe_dump(struct trapframe *tf) } void +trap_syscall(struct trapframe *tf) +{ + struct syscall_args scargs = { + .arg[0] = tf->rdi, + .arg[1] = tf->rsi, + .arg[2] = tf->rdx, + .arg[3] = tf->r10, + .arg[4] = tf->r9, + .arg[5] = tf->r8, + .tf = tf + }; + + if (tf->rax < MAX_SYSCALLS && tf->rax > 0) { + tf->rax = g_sctab[tf->rax](&scargs); + } +} + +void trap_handler(struct trapframe *tf) { trapframe_dump(tf); |