X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/9fe5e02cf615ad121c4460fbaaac2787d1e09c0e..9406e904ddad5db2ba2dd550e21bbb224899fd79:/lunaix-os/kernel/asm/x86/interrupts.c diff --git a/lunaix-os/kernel/asm/x86/interrupts.c b/lunaix-os/kernel/asm/x86/interrupts.c index 686c43d..7ed3427 100644 --- a/lunaix-os/kernel/asm/x86/interrupts.c +++ b/lunaix-os/kernel/asm/x86/interrupts.c @@ -1,8 +1,16 @@ #include +#include #include -void isr0 (isr_param* param) { - printf("[PANIC] Exception (%d) CS=0x%X, EIP=0x%X", param->vector, param->cs, param->eip); +void panic (const char* msg, isr_param* param) { + tty_set_theme(VGA_COLOR_BLACK, VGA_COLOR_LIGHT_RED); + tty_clear_line(10); + tty_clear_line(11); + tty_clear_line(12); + tty_set_cpos(0, 11); + printf(" INT %u: [0x%x: 0x%x] %s", param->vector, param->cs, param->eip, msg); + __spin: + goto __spin; } void @@ -10,7 +18,13 @@ interrupt_handler(isr_param* param) { switch (param->vector) { case 0: - isr0(param); - break; + panic("Division by 0", param); + break; // never reach + case FAULT_GENERAL_PROTECTION: + panic("General Protection", param); + break; // never reach + default: + panic("Unknown Interrupt", param); + break; // never reach } } \ No newline at end of file