diff options
-rw-r--r-- | ioapic.c | 3 | ||||
-rw-r--r-- | trap.c | 14 | ||||
-rw-r--r-- | userfs.c | 1 |
3 files changed, 10 insertions, 8 deletions
@@ -46,7 +46,7 @@ ioapic_init(void) for (i = 0; i < nintr; i++) { // active-hi and edge-triggered for ISA interrupts // Assume that pin 0 on the first I/O APIC is an ExtINT pin. - // Assume that pins 1-15 are ISA interrupts and that all + // Assume that pins 1-15 are ISA interrupts l = ioapic_read(io, IOAPIC_REDTBL_LO(i)); l = l & ~IOART_INTMASK; // allow INTs l |= IOART_INTMSET; @@ -59,7 +59,6 @@ ioapic_init(void) h = ioapic_read(io, IOAPIC_REDTBL_HI(i)); h &= ~IOART_DEST; ioapic_write(io, IOAPIC_REDTBL_HI(i), h); - // cprintf("intr %d: lo 0x%x hi 0x%x\n", i, l, h); } } @@ -79,12 +79,16 @@ trap(struct trapframe *tf) return; } - cprintf("trap %d from cpu %d eip %x\n", v, cpu(), tf->eip); + if(v == (IRQ_OFFSET + IRQ_SPURIOUS)){ + cprintf("spurious interrupt from cpu %d eip %x\n", cpu(), tf->eip); + return; // no eoi for this one. + } + if(curproc[cpu()]) { - cprintf("pid %d\n", curproc[cpu()]->pid); + cprintf("pid %d: unhandled trap %d on cpu %d eip %x---terminate process\n", + curproc[cpu()]->pid, v, cpu(), tf->eip); proc_exit(); } - // panic("trap"); - - return; + cprintf("unexpected trap %d from cpu %d eip %x\n", v, cpu(), tf->eip); + panic("trap"); } @@ -200,7 +200,6 @@ int main(void) { printf(stdout, "userfs is running\n"); - opentest(); writetest(); writetest1(); |