X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/cd09c4b222e4ddf45a42522563ae2471a829d1c8..0067bc210e621ccda286092d081a7890d65e1c18:/lunaix-os/kernel/asm/x86/idt.c diff --git a/lunaix-os/kernel/asm/x86/idt.c b/lunaix-os/kernel/asm/x86/idt.c index 9f2bd06..9b2f0c6 100644 --- a/lunaix-os/kernel/asm/x86/idt.c +++ b/lunaix-os/kernel/asm/x86/idt.c @@ -1,9 +1,8 @@ #include #include -#include #include -#define IDT_ENTRY 32 +#define IDT_ENTRY 256 uint64_t _idt[IDT_ENTRY]; uint16_t _idt_limit = sizeof(_idt) - 1; @@ -18,5 +17,20 @@ 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_isr250, 0); + _set_idt_entry(APIC_LINT0_IV, 0x08, _asm_isr251, 0); + _set_idt_entry(APIC_SPIV_IV, 0x08, _asm_isr252, 0); + _set_idt_entry(APIC_TIMER_IV, 0x08, _asm_isr253, 0); + _set_idt_entry(PC_KBD_IV, 0x08, _asm_isr201, 0); + + _set_idt_entry(RTC_TIMER_IV, 0x08, _asm_isr210, 0); + + // system defined interrupts + _set_idt_entry(LUNAIX_SYS_PANIC, 0x08, _asm_isr32, 0); + _set_idt_entry(LUNAIX_SYS_CALL, 0x08, _asm_isr33, 0); } \ No newline at end of file