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(); | 
