summaryrefslogtreecommitdiff
path: root/kernel/interrupts.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/interrupts.c')
-rw-r--r--kernel/interrupts.c49
1 files changed, 22 insertions, 27 deletions
diff --git a/kernel/interrupts.c b/kernel/interrupts.c
index fed2b28..51d8f8e 100644
--- a/kernel/interrupts.c
+++ b/kernel/interrupts.c
@@ -51,7 +51,7 @@ void int_default()
{
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"default handler");
}
-/*
+
void show_error(uint32_t err)
{
@@ -61,23 +61,23 @@ void show_error(uint32_t err)
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"Selector: %x",err&0b1111111111111000);
}
-//void int_irq0(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Divide by 0"); X86_IRQ_END }
-void int_irq1(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Single step (debugger)"); X86_IRQ_END }
-void int_irq2(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Non Maskable Interrupt"); X86_IRQ_END }
-void int_irq3(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Breakpoint (debugger)"); X86_IRQ_END }
-void int_irq4(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Overflow"); X86_IRQ_END }
-void int_irq5(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Bounds check"); X86_IRQ_END }
-void int_irq6(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Undefined OP Code"); X86_IRQ_END }
-void int_irq7(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"No coprocessor"); X86_IRQ_END }
-void int_irq8(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Double Fault"); X86_IRQ_END }
-void int_irq9(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Coprocessor Segment Overrun"); X86_IRQ_END }
-void int_irq10(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Invalid TSS"); X86_IRQ_END }
-void int_irq11(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Segment Not Present"); X86_IRQ_END }
-void int_irq12(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Stack Segment Overrun"); X86_IRQ_END }
-
-void int_irq13()
+
+void exception_handle_0(){ panic(FOOLOS_MODULE_NAME,"Divide by 0"); }
+void exception_handle_1(){ panic(FOOLOS_MODULE_NAME,"Single step (debugger)"); }
+void exception_handle_2(){ panic(FOOLOS_MODULE_NAME,"Non Maskable Interrupt"); }
+void exception_handle_3(){ panic(FOOLOS_MODULE_NAME,"Breakpoint (debugger)"); }
+void exception_handle_4(){ panic(FOOLOS_MODULE_NAME,"Overflow"); }
+void exception_handle_5(){ panic(FOOLOS_MODULE_NAME,"Bounds check"); }
+void exception_handle_6(){ panic(FOOLOS_MODULE_NAME,"Undefined OP Code"); }
+void exception_handle_7(){ panic(FOOLOS_MODULE_NAME,"No coprocessor"); }
+void exception_handle_8(){ panic(FOOLOS_MODULE_NAME,"Double Fault"); }
+void exception_handle_9(){ panic(FOOLOS_MODULE_NAME,"Coprocessor Segment Overrun"); }
+void exception_handle_10(){ panic(FOOLOS_MODULE_NAME,"Invalid TSS"); }
+void exception_handle_11(){ panic(FOOLOS_MODULE_NAME,"Segment Not Present"); }
+void exception_handle_12(){ panic(FOOLOS_MODULE_NAME,"Stack Segment Overrun"); }
+
+void exception_handle_13()
{
- X86_IRQ_BEGIN
uint32_t err;
asm("pop %eax"); // get Error Code
@@ -85,16 +85,13 @@ void int_irq13()
show_error(err);
panic(FOOLOS_MODULE_NAME,"General Protection Fault");
-
- X86_IRQ_END
}
-void int_irq14(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Page Fault"); X86_IRQ_END }
-void int_irq15(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Unassigned"); X86_IRQ_END }
-void int_irq16(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Coprocessor error"); X86_IRQ_END }
-void int_irq17(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Alignment Check"); X86_IRQ_END }
-void int_irq18(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Machine Check"); X86_IRQ_END }
-*/
+void exception_handle_15(){ panic(FOOLOS_MODULE_NAME,"Unassigned"); }
+void exception_handle_16(){ panic(FOOLOS_MODULE_NAME,"Coprocessor error"); }
+void exception_handle_17(){ panic(FOOLOS_MODULE_NAME,"Alignment Check"); }
+void exception_handle_18(){ panic(FOOLOS_MODULE_NAME,"Machine Check"); }
+
//set a handler for a specific interrupt
void int_install_ir(int irq, uint16_t flags, uint16_t sel, void *addr)
@@ -148,8 +145,6 @@ void int_init(uint16_t sel)
int_install_ir(17, 0b10001110, 0x08,&int_irq17);
int_install_ir(18, 0b10001110, 0x08,&int_irq18);
-
-
// setup some custom interrupts
// remember that we shifted all interrupts with the pic by 32