summaryrefslogtreecommitdiff
path: root/kernel/cpu/idt.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/cpu/idt.h')
-rw-r--r--kernel/cpu/idt.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/kernel/cpu/idt.h b/kernel/cpu/idt.h
new file mode 100644
index 0000000..46ef4a3
--- /dev/null
+++ b/kernel/cpu/idt.h
@@ -0,0 +1,68 @@
+/**
+ * @file idt.h
+ *
+ * @author Freya Murphy <freya@freyacat.org>
+ *
+ * IDT functions
+ */
+
+#ifndef IDT_H_
+#define IDT_H_
+
+#include <stdint.h>
+
+struct isr_regs {
+ uint64_t r15;
+ uint64_t r14;
+ uint64_t r13;
+ uint64_t r12;
+ uint64_t r11;
+ uint64_t r10;
+ uint64_t r9;
+ uint64_t r8;
+ uint64_t rbp;
+ uint64_t rdi;
+ uint64_t rsi;
+ uint64_t rdx;
+ uint64_t rcx;
+ uint64_t rbx;
+ uint64_t rax;
+
+ uint64_t rip;
+ uint64_t cs;
+ uint64_t rflags;
+ uint64_t rsp;
+ uint64_t ss;
+};
+
+struct rflags {
+ uint64_t cf : 1,
+ : 1,
+ pf : 1,
+ : 1,
+ af : 1,
+ : 1,
+ zf : 1,
+ sf : 1,
+
+ tf : 1,
+ if_ : 1,
+ df : 1,
+ of : 1,
+ iopl : 2,
+ nt : 1,
+ md : 1,
+
+ rf : 1,
+ vm : 1,
+ ac : 1,
+ vif : 1,
+ vip : 1,
+ id : 1,
+ : 42;
+};
+
+void idt_init(void);
+
+#endif /* idt.h */
+