]> git.dujemihanovic.xyz Git - nameless-os.git/blobdiff - kernel/arch/x86/irq/interrupt.c
Use interrupt frame and new double fault handler
[nameless-os.git] / kernel / arch / x86 / irq / interrupt.c
index b2abef97a08c956bce052cfe5c1635a4a1d72b3b..f7cbcdcce60622ddf2ac2b85283b59a6bdc84e7d 100644 (file)
@@ -5,16 +5,17 @@
 #include <irq/i8259a.h>
 
 /* This table will hold pointers to our interrupt handlers. */
-static int (*int_handler_table[256])(void);
+static int (*int_handler_table[256])(struct interrupt_frame *);
 
-void int_handler(int interrupt)
+void int_handler(struct interrupt_frame *frame)
 {
+       int interrupt = frame->interrupt;
        if (int_handler_table[interrupt] == NULL) {
                kprint("WARNING: Unhandled interrupt ", 0);
                kprintb(interrupt);
                kprint(" occurred!\n", 0);
        } else {
-               int ret = (*int_handler_table[interrupt])();
+               int ret = (*int_handler_table[interrupt])(frame);
                if (ret) {
                        kprint("WARNING: Error while handling interrupt ", 0);
                        kprintb(interrupt);
@@ -26,7 +27,7 @@ void int_handler(int interrupt)
        }
 }
 
-int register_interrupt(int irq, int (*handler)(void))
+int register_interrupt(int irq, int (*handler)(struct interrupt_frame *))
 {
        int_handler_table[irq] = handler;
        if (irq >= 32 && irq < 48) {