* Run through the table saving information needed for starting
...
...
@@ -164,11 +166,14 @@ mp_init(void)
p+=sizeof(structmpbe);
continue;
caseMPIOAPIC:
cprintf("an I/O APIC\n");
ioapic=(structmpioapic*)p;
cprintf("an I/O APIC: id %d %x\n",ioapic->apicno,ioapic->flags);
ioapic_id=ioapic->apicno;
p+=sizeof(structmpioapic);
continue;
caseMPIOINTR:
cprintf("an I/O intr\n");
intr=(structmpie*)p;
// cprintf("an I/O intr: type %d flags 0x%x bus %d souce bus irq %d dest ioapic id %d dest ioapic intin %d\n", intr->intr, intr->flags, intr->busno, intr->irq, intr->apicno, intr->intin);
p+=sizeof(structmpie);
continue;
default:
...
...
@@ -180,10 +185,18 @@ mp_init(void)
break;
}
}
if(mp->imcrp){// it appears that bochs doesn't support IMCR, and code won't run