diff --git a/src/kernel/arch_i386/interrupts.c b/src/kernel/arch_i386/interrupts.c index 985dbc8..fc917cf 100644 --- a/src/kernel/arch_i386/interrupts.c +++ b/src/kernel/arch_i386/interrupts.c @@ -21,7 +21,7 @@ cpu_registers_t *(*interrupt_handlers[16])(cpu_registers_t *regs) = {0}; void _irq_handler(cpu_registers_t *regs){ if(regs->int_no == 0x80){ - syscall(regs); + regs = syscall(regs); } else if(interrupt_handlers[regs->int_no - 32]) { diff --git a/src/kernel/shared/interrupts.h b/src/kernel/shared/interrupts.h index 9d729ad..d5df1c6 100644 --- a/src/kernel/shared/interrupts.h +++ b/src/kernel/shared/interrupts.h @@ -21,6 +21,8 @@ typedef struct idt{ #define IDT_DPL_KERNEL 0 << 5 #define IDT_DPL_USER 3 << 5 +cpu_registers_t *syscall(cpu_registers_t * regs); + inline void enable_interrupts(){ asm volatile("sti"); }