summaryrefslogtreecommitdiff
path: root/kernel/interrupts.c
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-09-03 23:21:33 +0200
committerMichal Idziorek <m.i@gmx.at>2014-09-03 23:21:33 +0200
commite7648669694806b366824c0dc0c8b80c8d167d35 (patch)
treeb1243ceaa1f7835ef8a77ef033bcacce9debacf7 /kernel/interrupts.c
parent4a46c2e07a9b79af01bbc984f20e01b12e98129f (diff)
debugging floppy driver :(
Diffstat (limited to 'kernel/interrupts.c')
-rw-r--r--kernel/interrupts.c46
1 files changed, 10 insertions, 36 deletions
diff --git a/kernel/interrupts.c b/kernel/interrupts.c
index 599221c..81ad1c9 100644
--- a/kernel/interrupts.c
+++ b/kernel/interrupts.c
@@ -32,9 +32,19 @@ void int_def_handler()
{
X86_IRQ_BEGIN
+ panic(FOOLOS_MODULE_NAME,"Unexpected Interrupt occured");
+
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_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 }
@@ -49,14 +59,6 @@ void int_irq10(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Invalid TSS"); X86_
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
@@ -136,31 +138,3 @@ void int_install()
__asm__("lidt %0"::"m" (idtd));
}
-/*
-//print interrupt table; //TODO!
-void int_show()
-{
- uint16_t *ptr3=&idt[0]; // TODO!
-
- scr_put_string("idt located: ");
- scr_put_hex(ptr3);
- scr_nextline();
-
-
- // first two bytes as chars
- int offset;
- for(offset=32;offset<40;offset++)
- {
- print_hex(offset-32); //ir // install keyboard handler
- int_install_ir(33, 0b10001110, 0x08,&int_kb_handler);
-q
- print_string(" -> ");
- print_hex(*(ptr3+offset*4)); //addrLo
- print_hex(*(ptr3+1+offset*4)); //sel
- print_hex(*(ptr3+2+offset*4)); //zeros & flags
- print_hex(*(ptr3+3+offset*4)); //addrHi
- print_nextline();
- }
-}
-*/
-