X-Git-Url: http://git.dujemihanovic.xyz/%7B%7B%20%24.Site.BaseURL%20%7D%7Dposts/index.xml?a=blobdiff_plain;f=kernel%2Farch%2Fx86%2Firq%2Finterrupt.c;h=f7cbcdcce60622ddf2ac2b85283b59a6bdc84e7d;hb=b87962874082db4093c960cf613eedae918180fc;hp=b2abef97a08c956bce052cfe5c1635a4a1d72b3b;hpb=a16345de748dc4ea0c692e24f016bb0d783ff5dd;p=nameless-os.git diff --git a/kernel/arch/x86/irq/interrupt.c b/kernel/arch/x86/irq/interrupt.c index b2abef9..f7cbcdc 100644 --- a/kernel/arch/x86/irq/interrupt.c +++ b/kernel/arch/x86/irq/interrupt.c @@ -5,16 +5,17 @@ #include /* 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) {