From a8286a152ecc3558837da24b7241e837ff7e3c1e Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Thu, 4 Sep 2014 01:39:28 +0200 Subject: new default interrupt handler in asm --- asm/int_default_handler.asm | 16 ++++++++++++++++ kernel/interrupts.c | 10 +++++----- 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 asm/int_default_handler.asm diff --git a/asm/int_default_handler.asm b/asm/int_default_handler.asm new file mode 100644 index 0000000..4515482 --- /dev/null +++ b/asm/int_default_handler.asm @@ -0,0 +1,16 @@ +global int_default_handler +[extern int_default] + + +[bits 32] +int_default_handler: + + cli + + call int_default + + mov al, 0x20 ;Port number AND command number to Acknowledge IRQ + out 0x20, al ;Acknowledge IRQ, so we keep getting interrupts + + sti + iret ;Interrupt-Return diff --git a/kernel/interrupts.c b/kernel/interrupts.c index 81ad1c9..c6acf61 100644 --- a/kernel/interrupts.c +++ b/kernel/interrupts.c @@ -5,6 +5,8 @@ #include "../lib/logger/log.h" // logger facilities #define FOOLOS_MODULE_NAME "interrupts" +void int_default_handler(); + void int_install_ir(int irq, uint16_t flags, uint16_t sel, void *addr); // the interrupt descriptor table @@ -28,13 +30,11 @@ static struct idt_desc } idtd; -void int_def_handler() +void int_default() { - X86_IRQ_BEGIN - panic(FOOLOS_MODULE_NAME,"Unexpected Interrupt occured"); +// panic(FOOLOS_MODULE_NAME,"Unexpected Interrupt occured"); - X86_IRQ_END } void show_error(uint32_t err) @@ -101,7 +101,7 @@ void int_init(uint16_t sel) int i; for(i=0; i