Basic PS/2 keyboard driver, and ...
[lunaix-os.git] / lunaix-os / kernel / asm / x86 / idt.c
index 9f2bd069180f0ea5c26ab3439f39f44ea0563f6e..5474743467670e4173d8424d973941522024da78 100644 (file)
@@ -1,9 +1,8 @@
 #include <arch/x86/idt.h>
 #include <arch/x86/interrupts.h>
-#include <arch/x86/types.h>
 #include <stdint.h>
 
-#define IDT_ENTRY 32
+#define IDT_ENTRY 256
 
 uint64_t _idt[IDT_ENTRY];
 uint16_t _idt_limit = sizeof(_idt) - 1;
@@ -18,5 +17,19 @@ void _set_idt_entry(uint32_t vector, uint16_t seg_selector, void (*isr)(), uint8
 
 void
 _init_idt() {
+    // CPU defined interrupts
     _set_idt_entry(FAULT_DIVISION_ERROR, 0x08, _asm_isr0, 0);
+    _set_idt_entry(FAULT_GENERAL_PROTECTION, 0x08, _asm_isr13, 0);
+    _set_idt_entry(FAULT_PAGE_FAULT, 0x08, _asm_isr14, 0);
+
+    _set_idt_entry(APIC_ERROR_IV, 0x08, _asm_isr200, 0);
+    _set_idt_entry(APIC_LINT0_IV, 0x08, _asm_isr201, 0);
+    _set_idt_entry(APIC_TIMER_IV, 0x08, _asm_isr202, 0);
+    _set_idt_entry(APIC_SPIV_IV,  0x08, _asm_isr203, 0);
+    _set_idt_entry(PC_KBD_IV,  0x08, _asm_isr204, 0);
+
+    _set_idt_entry(RTC_TIMER_IV,  0x08, _asm_isr210, 0);
+
+    // system defined interrupts
+    _set_idt_entry(LUNAIX_SYS_PANIC, 0x08, _asm_isr32, 0);
 }
\ No newline at end of file