summaryrefslogtreecommitdiff
path: root/arch/i386/include/kernel/idt.h
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.xyz>2021-10-09 15:26:32 -0500
committerDanny Holman <dholman@gymli.xyz>2021-10-09 15:39:59 -0500
commit376ec895110deb142a9162984e50ad6f0616758e (patch)
treeaada41ecfa65615e2aaf8264b51eda53c4f7c6aa /arch/i386/include/kernel/idt.h
parentc4845de1e4ba49ba066e5729814fdb5bcd7e46f8 (diff)
arch: i386: include more information in IDT
Include information about the current stack frame in the IDT handler(s). Signed-off-by: Danny Holman <dholman@gymli.xyz>
Diffstat (limited to 'arch/i386/include/kernel/idt.h')
-rw-r--r--arch/i386/include/kernel/idt.h19
1 files changed, 9 insertions, 10 deletions
diff --git a/arch/i386/include/kernel/idt.h b/arch/i386/include/kernel/idt.h
index 7ccad30..699eb96 100644
--- a/arch/i386/include/kernel/idt.h
+++ b/arch/i386/include/kernel/idt.h
@@ -4,14 +4,14 @@
#include <stdint.h>
// IDT Flags
-#define SEGMENT_PRESENT 0x8
-#define SEGMENT_RING0 0x0
-#define SEGMENT_STORAGE 0x0
-#define SEGMENT_GATE 0xE
-#define SEGMENT_DPL 0x8
+#define SEGMENT_PRESENT 0x80
+#define SEGMENT_RING0 0x00
+#define SEGMENT_RING3 0x60
+#define SEGMENT_STORAGE 0x00
+#define SEGMENT_INTERRUPT 0x0E
+#define IDT_EXCEPTION (SEGMENT_PRESENT | SEGMENT_INTERRUPT)
-#define SEGMENT_FLAG SEGMENT_PRESENT | SEGMENT_RING0 | SEGMENT_STORAGE |\
- SEGMENT_GATE | SEGMENT_DPL;
+#define IDT_MAX_DESCRIPTORS 256
struct idt_entry {
uint16_t isr_low;
@@ -26,10 +26,9 @@ struct idt_ptr {
uint32_t base;
} __attribute__((packed));
-extern struct idt_entry idt[256];
+extern struct idt_entry idt[IDT_MAX_DESCRIPTORS];
extern struct idt_ptr idtr;
extern void idt_set_gate(uint8_t num, void(*handler)(void), uint16_t cs, uint8_t flags);
-extern void exception_handler(int num);
-#endif \ No newline at end of file
+#endif