summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-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
3 files changed, 4 insertions, 12 deletions
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,
};