X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/f1036cb8c8899f38e97e45d345a0c28585d9a000..d07db7c15d6cf9d6c0fd07ea29cca77a89b02a79:/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 925c13d..8dfb23b 100644 --- a/lunaix-os/kernel/asm/x86/interrupts.c +++ b/lunaix-os/kernel/asm/x86/interrupts.c @@ -1,14 +1,20 @@ #include -#include +#include #include -void panic (const char* msg, isr_param* param) { +void panic_msg(const char* msg) { tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_RED); tty_clear_line(10); tty_clear_line(11); tty_clear_line(12); tty_set_cpos(0, 11); - printf(" INT %u: (%x) [0x%x: 0x%x] %s", param->vector, param->err_code, param->cs, param->eip, msg); + printf(" %s", msg); +} + +void panic (const char* msg, isr_param* param) { + char buf[1024]; + sprintf(buf, "INT %u: (%x) [%p: %p] %s", param->vector, param->err_code, param->cs, param->eip, msg); + panic_msg(buf); while(1); } @@ -25,6 +31,10 @@ interrupt_handler(isr_param* param) { case FAULT_PAGE_FAULT: panic("Page Fault", param); break; // never reach + case LUNAIX_SYS_PANIC: + panic_msg((char*)(param->registers.edi)); + while(1); + break; // never reach default: panic("Unknown Interrupt", param); break; // never reach