#include <arch/x86/interrupts.h>
+#include <lunaix/assert.h>
#include <libc/stdio.h>
-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
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