Added IDT Logic (Didn't actually add any IDTs)

This commit is contained in:
2024-03-08 21:57:53 +01:00
parent 78135e4c7e
commit 861d843dcc
12 changed files with 83 additions and 1 deletions
+32
View File
@@ -0,0 +1,32 @@
#include "idt.h"
#include "stdint.h"
struct idtEntry {
uint16_t offsetLow;
uint16_t selector;
uint8_t zero;
uint8_t typeAttr;
uint16_t offsetHigh;
} __attribute__((packed));
struct idtPointer {
uint16_t limit;
uint32_t base;
} __attribute__((packed));
struct idtEntry idt[256] = { 0 };
struct idtPointer idtp;
void idtSetGate(uint8_t i, uint32_t offset, uint16_t selector, uint8_t typeAttr) {
idt[i].offsetLow = (uint16_t)offset;
idt[i].selector = selector;
idt[i].zero = 0;
idt[i].typeAttr = typeAttr;
idt[i].offsetHigh = (uint16_t)(offset >> 16);
}
void setupIdt() {
idtp.limit = sizeof(struct idtEntry) * 256;
idtp.base = (uint32_t)&idt;
}