summaryrefslogtreecommitdiff
path: root/include/idt.h
diff options
context:
space:
mode:
authorSimponic <loganthebean222@gmail.com>2021-03-01 15:17:24 -0700
committerSimponic <loganthebean222@gmail.com>2021-03-01 15:17:24 -0700
commitc0c846cc15bbc4a14f705eeb923ed1024f4ee1a0 (patch)
tree9556cbe258bc72d263c33dc4d9876d4fb72402dc /include/idt.h
parent09d1dcf3b115658283cb09a08986271398e8d8f8 (diff)
downloadsimponicos-c0c846cc15bbc4a14f705eeb923ed1024f4ee1a0.tar.gz
simponicos-c0c846cc15bbc4a14f705eeb923ed1024f4ee1a0.zip
Move to GitHub for flexing
Diffstat (limited to 'include/idt.h')
-rw-r--r--include/idt.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/include/idt.h b/include/idt.h
new file mode 100644
index 0000000..c08cf75
--- /dev/null
+++ b/include/idt.h
@@ -0,0 +1,56 @@
+#ifndef IDT_H
+#define IDT_H
+
+#include "types.h"
+
+struct IDT {
+ uint32_t base;
+ uint16_t selector;
+ uint8_t flags;
+} __attribute__((packed));
+
+struct IDT_ptr {
+ uint16_t limit;
+ uint32_t base;
+} __attribute__((packed));
+
+uint8_t idt_entries[8 * 256]; // 8 bytes per entry * 256 entries
+
+struct IDT createIDT(uint32_t base, uint16_t selector, uint8_t flags);
+void encodeIDT(uint8_t* idtEntry, struct IDT source);
+void initializeIDT();
+
+extern void isr0 ();
+extern void isr1 ();
+extern void isr2 ();
+extern void isr3 ();
+extern void isr4 ();
+extern void isr5 ();
+extern void isr6 ();
+extern void isr7 ();
+extern void isr8 ();
+extern void isr9 ();
+extern void isr10();
+extern void isr11();
+extern void isr12();
+extern void isr13();
+extern void isr14();
+extern void isr15();
+extern void isr16();
+extern void isr17();
+extern void isr18();
+extern void isr19();
+extern void isr20();
+extern void isr21();
+extern void isr22();
+extern void isr23();
+extern void isr24();
+extern void isr25();
+extern void isr26();
+extern void isr27();
+extern void isr28();
+extern void isr29();
+extern void isr30();
+extern void isr31();
+
+#endif // IDT_H