From 3893276974e04b881b7b80975e81bd0193ddef3f Mon Sep 17 00:00:00 2001 From: boreddevnl Date: Tue, 21 Apr 2026 16:41:03 +0200 Subject: [PATCH] fix(idt): print RIP, err_code, and CR2 to serial before kernel panic --- src/sys/idt.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/sys/idt.c b/src/sys/idt.c index a3b95ee..a8ac69d 100644 --- a/src/sys/idt.c +++ b/src/sys/idt.c @@ -79,6 +79,14 @@ uint64_t exception_handler_c(registers_t *regs) { // Kernel mode exception const char *name = (vector < 32) ? exception_messages[vector] : "Unknown Kernel Exception"; + serial_write("\nRIP: 0x"); k_itoa_hex(regs->rip, buf); serial_write(buf); + serial_write("\nErr: 0x"); k_itoa_hex(regs->err_code, buf); serial_write(buf); + if (vector == 14) { + uint64_t cr2; + asm volatile("mov %%cr2, %0" : "=r"(cr2)); + serial_write("\nCR2: 0x"); k_itoa_hex(cr2, buf); serial_write(buf); + } + serial_write("\n"); kernel_panic(regs, name); return (uint64_t)regs; // Unreachable