diff --git a/ioapic.c b/ioapic.c index 5120b23..c96c4f7 100644 --- a/ioapic.c +++ b/ioapic.c @@ -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); } } diff --git a/trap.c b/trap.c index ef40f7e..bbb2500 100644 --- a/trap.c +++ b/trap.c @@ -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"); } diff --git a/userfs.c b/userfs.c index 47add52..6fe62d6 100644 --- a/userfs.c +++ b/userfs.c @@ -200,7 +200,6 @@ int main(void) { printf(stdout, "userfs is running\n"); - opentest(); writetest(); writetest1();