aboutsummaryrefslogtreecommitdiff
path: root/kernel/include/isr.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include/isr.h')
-rw-r--r--kernel/include/isr.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/kernel/include/isr.h b/kernel/include/isr.h
new file mode 100644
index 0000000..d3543af
--- /dev/null
+++ b/kernel/include/isr.h
@@ -0,0 +1,46 @@
+#include <stdint.h>
+
+/* these are all implemented in isr-as.S */
+extern void _isr0(void);
+extern void _isr1(void);
+extern void _isr2(void);
+extern void _isr3(void);
+extern void _isr4(void);
+extern void _isr5(void);
+extern void _isr6(void);
+extern void _isr7(void);
+extern void _isr8(void);
+extern void _isr9(void);
+extern void _isr10(void);
+extern void _isr11(void);
+extern void _isr12(void);
+extern void _isr13(void);
+extern void _isr14(void);
+extern void _isr15(void);
+extern void _isr16(void);
+extern void _isr17(void);
+extern void _isr18(void);
+extern void _isr19(void);
+extern void _isr20(void);
+extern void _isr21(void);
+extern void _isr22(void);
+extern void _isr23(void);
+extern void _isr24(void);
+extern void _isr25(void);
+extern void _isr26(void);
+extern void _isr27(void);
+extern void _isr28(void);
+extern void _isr29(void);
+extern void _isr30(void);
+extern void _isr31(void);
+
+/* installs all the ISR's */
+void isr_init(void);
+
+/* This defines what the stack looks like after an ISR was running */
+struct regs_t {
+ uint32_t gs, fs, es, ds; /* pushed the segs last */
+ uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax; /* pushed by 'pusha' */
+ uint32_t int_no, err_code; /* our 'push byte #' and ecodes do this */
+ uint32_t eip, cs, eflags, useresp, ss; /* pushed by the processor automatically */
+};