aboutsummaryrefslogtreecommitdiff
path: root/kernel/include/isr.h
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-02-02 21:48:38 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-02-02 21:48:38 -0500
commitc8a195e1eb19d346c03c1dfa6ed66c6215caefa2 (patch)
tree3096ea08f7f213d7efe56a86391ab79b27333d40 /kernel/include/isr.h
parent5c84e678defa9333aefcdcd0870564fb945a8c61 (diff)
downloadkappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.zip
kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.gz
kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.bz2
kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.xz
Refactor, begin writing a PS/2 driver
Diffstat (limited to 'kernel/include/isr.h')
-rw-r--r--kernel/include/isr.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/include/isr.h b/kernel/include/isr.h
index 5d6d282..de81cd2 100644
--- a/kernel/include/isr.h
+++ b/kernel/include/isr.h
@@ -34,15 +34,18 @@ extern void _isr29(void);
extern void _isr30(void);
extern void _isr31(void);
-/* installs all the ISR's */
+/* installs ISR's 0-31 */
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 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 err_code; /* exceptions push this */
+ uint32_t int_no; /* interrupt stubs do this */
uint32_t eip, cs, eflags, useresp, ss; /* pushed by the processor automatically */
-};
+} __attribute__((packed));
+
+#define IRQ(x) (32+x)
void set_interrupt_handler(uint8_t interrupt, void (*func)(struct regs_t));