dynamic memory manager (malloc & free)
[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_BLACK, VGA_COLOR_LIGHT_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: [0x%x: 0x%x] %s", param->vector, param->cs, param->eip, msg);
12     __spin:
13         goto __spin;
14 }
15
16 void 
17 interrupt_handler(isr_param* param) {
18     switch (param->vector)
19     {
20         case 0:
21             panic("Division by 0", param);
22             break;  // never reach
23         case FAULT_GENERAL_PROTECTION:
24             panic("General Protection", param);
25             break;  // never reach
26         default:
27             panic("Unknown Interrupt", param);
28             break;  // never reach
29     }
30 }