summaryrefslogtreecommitdiff
path: root/src/sys/arch/amd64/cpu/trap.c
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-09-17 19:21:57 -0400
committerIan Moffett <ian@osmora.org>2025-09-17 19:21:57 -0400
commit8e268df60bde6b5548b849cc9b83a224a74b3e43 (patch)
treebdf63b45702b9f926400dd621571a2ee42aafb4c /src/sys/arch/amd64/cpu/trap.c
parentf90b091a023ba80d1901eab70baf44af03921ace (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.c19
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);