diff --git a/src/kernel/interrupts/idt.c b/src/kernel/interrupts/idt.c index d704d5e..c82814d 100644 --- a/src/kernel/interrupts/idt.c +++ b/src/kernel/interrupts/idt.c @@ -38,5 +38,7 @@ registers *int_handler(registers *r) debug("Unhandled interrupt occurred\n"); debug("Interrupt number: %d Error code: %d\n", r->int_no, r->err_code); debug_print_registers(r); + + PANIC("Unhandled interrupt occurred"); for(;;); } diff --git a/toolchain/gdbinit b/toolchain/gdbinit index 8f8ed31..c218cc1 100644 --- a/toolchain/gdbinit +++ b/toolchain/gdbinit @@ -83,3 +83,17 @@ class Reg(gdb.Command): Reg() end + +define restore_env +set $name = $arg0 +python + +registers = {r: gdb.parse_and_eval('$name->' + r) for r in +['rax', 'rbx', 'rcx', 'rdx', 'rsi', 'rdi', 'rbp', 'rsp', 'r8', 'r9', 'r10', +'r11', 'r12', 'r13', 'r14', 'r15', 'rip']} + +for r in registers.items(): + gdb.parse_and_eval('$%s=%s' % r) +gdb.execute('frame 0') +end +end