diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-08-31 21:06:56 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-08-31 21:06:56 +0200 |
| commit | 67f1b1d25d931c06c8f98e2c2de05fa29003e6ab (patch) | |
| tree | eab4d52d406eb1a2816d9aea590321db6a30736a /kernel/kernel.c | |
| parent | 51be5669dd946e8869aee29a2efa1f92b1cc59ae (diff) | |
Moved Interrupt related code to interrupt.c
Diffstat (limited to 'kernel/kernel.c')
| -rw-r--r-- | kernel/kernel.c | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c index 69da50a..35a1321 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -7,56 +7,12 @@ /////// // interrupt handler prototypes // todo: move somewhere else!? -void int_def_handler(); void int_clock_handler(); void int_kb_handler(); void int_floppy_handler(); - uint32_t read_eip(); -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 show_error(uint32_t err) -{ - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"interrupt error code: 0x%08x",err); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"External Event: %x",err&0b001); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"Location: %x",err&0b110); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"Selector: %x",err&0b1111111111111000); -} - -void int_irq13() -{ - X86_IRQ_BEGIN - - uint32_t err; - asm("pop %eax"); // get Error Code - asm ("mov %%eax, %0":"=r"(err)); - 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 test_a20() { @@ -137,26 +93,6 @@ void kernel_main(uint32_t initial_stack) // install floppy interrupt handler int_install_ir(38, 0b10001110, 0x08,&int_floppy_handler); - // exceptions - int_install_ir(0, 0b10001110, 0x08,&int_irq0); - int_install_ir(1, 0b10001110, 0x08,&int_irq1); - int_install_ir(2, 0b10001110, 0x08,&int_irq2); - int_install_ir(3, 0b10001110, 0x08,&int_irq3); - int_install_ir(4, 0b10001110, 0x08,&int_irq4); - int_install_ir(5, 0b10001110, 0x08,&int_irq5); - int_install_ir(6, 0b10001110, 0x08,&int_irq6); - int_install_ir(7, 0b10001110, 0x08,&int_irq7); - int_install_ir(8, 0b10001110, 0x08,&int_irq8); - int_install_ir(9, 0b10001110, 0x08,&int_irq9); - int_install_ir(10, 0b10001110, 0x08,&int_irq10); - int_install_ir(11, 0b10001110, 0x08,&int_irq11); - int_install_ir(12, 0b10001110, 0x08,&int_irq12); - int_install_ir(13, 0b10001110, 0x08,&int_irq13); - int_install_ir(14, 0b10001110, 0x08,&int_irq14); - int_install_ir(15, 0b10001110, 0x08,&int_irq15); - int_install_ir(16, 0b10001110, 0x08,&int_irq16); - int_install_ir(17, 0b10001110, 0x08,&int_irq17); - int_install_ir(18, 0b10001110, 0x08,&int_irq18); // now we can enable interrupts back again int_enable(); |
