#include "idt.hpp" #include "libs/string.hpp" IDT_REGISTER IDTR = { IDT_GATE_SIZE*IDT_MAX_ENTRIES, IDT_ADDR }; extern u64 INT_DEFAULT,INT_0,INT_14,INT_KBD; void idt_enable_interrupt(void){ IDT_DESCRIPTOR d; d.ign=0; d.ist=0; d.selector=0x08; d.options=IDT_OPT_P|IDT_OPT_PRVL_0|IDT_OPT_TYPE_INT; // Write idt entries for(u16 i=0;i>32; u32 desc96_127=desc.ign; u32* dst=(u32*)(IDTR.base+index*IDT_GATE_SIZE); *dst=desc0_31; *(dst+1)=desc32_63; *(dst+2)=desc64_95; *(dst+3)=desc96_127; }