M ip/il.c => ip/il.c +2 -2
@@ 155,10 155,10 @@ ilconnect(Conv *c, char **argv, int argc)
{
char *e;
- e = ilstart(c, IL_CONNECT, 20);
+ e = Fsstdconnect(c, argv, argc);
if(e != nil)
return e;
- return Fsstdconnect(c, argv, argc);
+ return ilstart(c, IL_CONNECT, 20);
}
int
M pc/i8259.c => pc/i8259.c +2 -4
@@ 91,10 91,8 @@ i8259init(void)
elcr = (inb(Elcr2)<<8)|elcr1;
}
outb(Elcr1, elcr1);
- /*
- if(elcr)
- print("ELCR: %4.4uX\n", elcr);
- */
+// if(elcr)
+// print("ELCR: %4.4uX\n", elcr);
}
int
M pc/mp.c => pc/mp.c +8 -1
@@ 359,8 359,15 @@ mpstartap(Apic* apic)
nvramwrite(0x0F, 0x0A);
lapicstartap(apic, PADDR(APBOOTSTRAP));
- for(i = 0; i < 100000 && (active.machs & (1<<machno)) == 0; i++)
+ for(i = 0; i < 100000; i++){
+ lock(&mprdthilock);
+ if(mprdthi & ((1<<apic->apicno)<<24)){
+ unlock(&mprdthilock);
+ break;
+ }
+ unlock(&mprdthilock);
microdelay(10);
+ }
nvramwrite(0x0F, 0x00);
}
M pc/mp.h => pc/mp.h +1 -1
@@ 168,7 168,7 @@ typedef struct Apic {
} Apic;
enum {
- MaxAPICNO = 7,
+ MaxAPICNO = 31,
};
enum { /* I/O APIC registers */