From 121858ee317620c09c1856e000e8dfa4ff0e7773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Mon, 17 Jan 2022 00:26:04 +0100 Subject: [PATCH] Better interrupt messages --- src/kernel/cpu/interrupts.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/kernel/cpu/interrupts.c b/src/kernel/cpu/interrupts.c index e2db3be..a5b7436 100644 --- a/src/kernel/cpu/interrupts.c +++ b/src/kernel/cpu/interrupts.c @@ -57,9 +57,26 @@ registers *int_handler(registers *r) { if(int_handlers[r->int_no]) return int_handlers[r->int_no](r); - debug_error("Unhandled interrupt occurred\n"); - debug_error("Interrupt number: %d, Error code: %d\n", r->int_no, r->err_code); - PANIC("Unhandled interrupt"); - //for(;;); + if(r->int_no < IRQ_BASE) + { + debug_error("UNHANDLED EXCEPTION\n"); + switch(r->int_no) { + case 14: + debug_error("Page fault\n"); + break; + case 6: + debug_error("Invalid opcode\n"); + } + debug_error("Interrupt number: %d, Error code: %d\n", r->int_no, r->err_code); + PANIC("Unhandled interrupt\n"); + } else if(r->int_no < IRQ_BASE + MAX_IRQS) { + debug_error("UNHANDLED IRQ\n"); + debug_error("IRQ: %d", r->int_no - IRQ_BASE); + PANIC("Unhandled IRQ\n"); + } else { + debug_error("UNKNOWN INTERRUPT\n"); + debug_error("Interrupt number: %d\n", r->int_no); + PANIC("Unknown interrupt\n"); + } return r; } \ No newline at end of file