From 99019721a9e147c49becc466c5427609b937aca8 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Wed, 21 Apr 2021 18:54:50 +0200 Subject: Enable interrupts --- src/core/idt.cc | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/core/idt.cc (limited to 'src/core/idt.cc') diff --git a/src/core/idt.cc b/src/core/idt.cc new file mode 100644 index 0000000..b808625 --- /dev/null +++ b/src/core/idt.cc @@ -0,0 +1,51 @@ +#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; + +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; +} \ No newline at end of file -- cgit v1.2.3