summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-03-16 13:03:19 -0400
committerIan Moffett <ian@osmora.org>2024-03-16 13:03:19 -0400
commitf166b2303a96a5e65e235139291df93b2b24bc3e (patch)
tree556e787bfc6ed1c9891aec9023ce4f8caf589958
parent3db86a30644d3eb3a964202dbfd7e91c432bda7b (diff)
kernel,libc: syscall: Improve syscall code
- Remove the SYS_debug syscall - First syscall starts at 1 Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--lib/libc/include/sys/syscall.h1
-rw-r--r--sys/arch/amd64/amd64/syscall.c5
-rw-r--r--sys/include/sys/syscall.h3
-rw-r--r--sys/kern/kern_syscall.c8
4 files changed, 4 insertions, 13 deletions
diff --git a/lib/libc/include/sys/syscall.h b/lib/libc/include/sys/syscall.h
index b5e5fc2..34f762d 100644
--- a/lib/libc/include/sys/syscall.h
+++ b/lib/libc/include/sys/syscall.h
@@ -34,7 +34,6 @@
#include <stdint.h>
#endif
-#define SYS_debug 0
#define SYS_exit 1
#if !defined(__ASSEMBLER__)
diff --git a/sys/arch/amd64/amd64/syscall.c b/sys/arch/amd64/amd64/syscall.c
index e80fe94..68235d5 100644
--- a/sys/arch/amd64/amd64/syscall.c
+++ b/sys/arch/amd64/amd64/syscall.c
@@ -42,7 +42,8 @@ __syscall(struct trapframe *tf)
.sp = tf->rsp
};
- if (args.code < __MAX_SYSCALLS) {
- tf->rax = g_syscall_table[tf->rax](&args);
+ if (args.code < __MAX_SYSCALLS && args.code > 0) {
+ args.code -= 1;
+ tf->rax = g_syscall_table[args.code](&args);
}
}
diff --git a/sys/include/sys/syscall.h b/sys/include/sys/syscall.h
index 03eda0b..66dc5f3 100644
--- a/sys/include/sys/syscall.h
+++ b/sys/include/sys/syscall.h
@@ -37,8 +37,7 @@
/* Do not reorder */
enum {
- SYS_debug = 0,
- SYS_exit,
+ SYS_exit = 1,
__MAX_SYSCALLS
};
diff --git a/sys/kern/kern_syscall.c b/sys/kern/kern_syscall.c
index 5a88bbb..b6e31d1 100644
--- a/sys/kern/kern_syscall.c
+++ b/sys/kern/kern_syscall.c
@@ -32,13 +32,6 @@
#include <sys/cdefs.h>
#include <sys/types.h>
-static uint64_t
-sys_debug(struct syscall_args *args)
-{
- /* TODO */
- return 0;
-}
-
__noreturn static uint64_t
sys_exit(struct syscall_args *args)
{
@@ -47,6 +40,5 @@ sys_exit(struct syscall_args *args)
}
uint64_t(*g_syscall_table[__MAX_SYSCALLS])(struct syscall_args *args) = {
- sys_debug,
sys_exit,
};