diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-02-01 16:40:00 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-02-01 16:40:00 -0500 |
| commit | 957b031689658c1ff67ea8a8a04640be9bec2d7d (patch) | |
| tree | 231c46b390d8d242461a0c571b8fbcf671e8c370 /kernel/idt.c | |
| parent | 439d724ce5939cab7a5c858d1829f212e01e0402 (diff) | |
| download | kappa-957b031689658c1ff67ea8a8a04640be9bec2d7d.zip kappa-957b031689658c1ff67ea8a8a04640be9bec2d7d.tar.gz kappa-957b031689658c1ff67ea8a8a04640be9bec2d7d.tar.bz2 kappa-957b031689658c1ff67ea8a8a04640be9bec2d7d.tar.xz | |
a lot of kernel work
Diffstat (limited to 'kernel/idt.c')
| -rw-r--r-- | kernel/idt.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/kernel/idt.c b/kernel/idt.c new file mode 100644 index 0000000..e1ff72f --- /dev/null +++ b/kernel/idt.c @@ -0,0 +1,23 @@ +#include <stdint.h> +#include <string.h> +#include "idt.h" + +void idt_set_gate(uint8_t idx, uint32_t base, uint16_t sel, uint8_t flags) +{ + idt[idx].base_lo = base & 0xFFFF; + idt[idx].base_hi = base >> 16; + idt[idx].sel = sel; + idt[idx].zero = 0; + idt[idx].flags = flags; +} + +void idt_init(void) +{ + printf("idt_init()"); + idt_pt.limit = sizeof(idt) - 1; + idt_pt.base = (uint32_t)&idt; + + memset(&idt, 0, sizeof(idt)); + + idt_flush((uint32_t)&idt_pt); +} |