diff --git a/src/drivers/nulldrv/main.s b/src/drivers/nulldrv/main.s index d6973f6..c280013 100644 --- a/src/drivers/nulldrv/main.s +++ b/src/drivers/nulldrv/main.s @@ -2,9 +2,9 @@ global _start _start: xor rbp, rbp ; Sentinel rbp - mov rdi, 0 ; DEBUG syscall - .loop: + mov rax, 0 ; DEBUG syscall syscall + jmp .loop diff --git a/src/kernel/interrupts.cpp b/src/kernel/interrupts.cpp index b3b836c..c560cfb 100644 --- a/src/kernel/interrupts.cpp +++ b/src/kernel/interrupts.cpp @@ -303,12 +303,9 @@ addr_t syscall_handler(addr_t return_rsp, cpu_state regs) { console *cons = console::get(); - syscall call = static_cast(regs.rdi & 0xffff); + syscall call = static_cast(regs.rax); switch (call) { - case syscall::message: - break; - case syscall::debug: cons->set_color(11); cons->printf("\nReceived DEBUG syscall\n"); @@ -316,6 +313,9 @@ syscall_handler(addr_t return_rsp, cpu_state regs) print_regs(regs); break; + case syscall::message: + break; + default: cons->set_color(9); cons->printf("\nReceived unknown syscall: %02x\n", call); diff --git a/src/kernel/syscall.h b/src/kernel/syscall.h index 72bfc06..6513785 100644 --- a/src/kernel/syscall.h +++ b/src/kernel/syscall.h @@ -1,6 +1,6 @@ #pragma once -enum class syscall : uint16_t +enum class syscall : uint64_t { debug, message,