#include "lib/print.h" #include extern void master_eoi(void); struct registers { uint32_t edi, esi, ebp, esp_dummy, ebx, edx, ecx, eax; uint32_t int_no; uint32_t error_code; uint32_t eip, cs, eflags, useresp, ss; }; const char* err_messages[32] = { [0] = "Divide by 0", [1] = "", [8] = "", [13] = "General Protection Fault", [14] = "Page Fault", }; void common_interrupt_handler(struct registers *regs) { switch (regs->int_no) { case 0: case 1: case 8: case 13: case 14: kprint("CPU Error: "); kprint(err_messages[regs->int_no]); kprint("\n"); break; case 32: // wake the PIC timer driver master_eoi(); break; case 33: // wake the keyboard driver master_eoi(); break; default: kprint("Received unhandled interrupt\n"); return; } }