grow on demand heap
[lunaix-os.git] / lunaix-os / kernel / asm / x86 / interrupts.c
1 #include <arch/x86/interrupts.h>
2 #include <lunaix/assert.h>
3 #include <libc/stdio.h>
4
5 void panic (const char* msg, isr_param* param) {
6     tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_RED);
7     tty_clear_line(10);
8     tty_clear_line(11);
9     tty_clear_line(12);
10     tty_set_cpos(0, 11);
11     printf(" INT %u: (%x) [0x%x: 0x%x] %s", param->vector, param->err_code, param->cs, param->eip, msg);
12     while(1);
13 }
14
15 void 
16 interrupt_handler(isr_param* param) {
17     switch (param->vector)
18     {
19         case 0:
20             panic("Division by 0", param);
21             break;  // never reach
22         case FAULT_GENERAL_PROTECTION:
23             panic("General Protection", param);
24             break;  // never reach
25         case FAULT_PAGE_FAULT:
26             panic("Page Fault", param);
27             break;  // never reach
28         default:
29             panic("Unknown Interrupt", param);
30             break;  // never reach
31     }
32 }