Various mmu cleanups. [rsc] --rw-rw-r-- M 771144 glenda sys 55143 Feb 11 09:13 sys/src/9/pc/sd53c8xx.c /n/sourcesdump/2006/0211/plan9/sys/src/9/pc/sd53c8xx.c:1941,1948 - /n/sourcesdump/2006/0212/plan9/sys/src/9/pc/sd53c8xx.c:1941,1946 return r->status = status; } - #define vpt ((ulong*)VPT) - #define VPTX(va) (((ulong)(va))>>12) static void cribbios(Controller *c) { [rsc] --rw-rw-r-- M 771144 rsc sys 2678 Feb 11 09:10 sys/src/9/pc/realmode.c /n/sourcesdump/2006/0211/plan9/sys/src/9/pc/realmode.c:28,33 - /n/sourcesdump/2006/0212/plan9/sys/src/9/pc/realmode.c:28,34 realmode(Ureg *ureg) { int s; + ulong cr3; extern void realmode0(void); /* in l.s */ extern void i8259off(void), i8259on(void); /n/sourcesdump/2006/0211/plan9/sys/src/9/pc/realmode.c:42,47 - /n/sourcesdump/2006/0212/plan9/sys/src/9/pc/realmode.c:43,49 s = splhi(); m->pdb[PDX(0)] = m->pdb[PDX(KZERO)]; /* identity map low */ + cr3 = getcr3(); putcr3(PADDR(m->pdb)); i8259off(); realmode0(); /n/sourcesdump/2006/0211/plan9/sys/src/9/pc/realmode.c:51,59 - /n/sourcesdump/2006/0212/plan9/sys/src/9/pc/realmode.c:53,61 * Don't turn interrupts on before the kernel is ready! */ i8259on(); - putcr3(m->tss->cr3); } m->pdb[PDX(0)] = 0; /* remove low mapping */ + putcr3(cr3); splx(s); *ureg = realmoderegs; unlock(&rmlock); [rsc] --rw-rw-r-- M 771144 glenda sys 23014 Feb 11 09:13 sys/src/9/port/devcons.c /n/sourcesdump/2006/0211/plan9/sys/src/9/port/devcons.c:289,300 - /n/sourcesdump/2006/0212/plan9/sys/src/9/port/devcons.c:289,300 va_start(arg, fmt); n = vseprint(buf+strlen(buf), buf+sizeof(buf), fmt, arg) - buf; va_end(arg); - buf[n] = '\n'; - uartputs(buf, n+1); + iprint("%s\n", buf); if(consdebug) (*consdebug)(); spllo(); prflush(); + buf[n] = '\n'; putstrn(buf, n+1); dumpstack(); [rsc] --rw-rw-r-- M 771144 glenda sys 3200 Feb 11 09:09 sys/src/9/port/qlock.c /n/sourcesdump/2006/0211/plan9/sys/src/9/port/qlock.c:19,27 - /n/sourcesdump/2006/0212/plan9/sys/src/9/port/qlock.c:19,27 Proc *p; if(m->ilockdepth != 0) - print("qlock: %lux: ilockdepth %d", getcallerpc(&q), m->ilockdepth); + print("qlock: %lux: ilockdepth %d\n", getcallerpc(&q), m->ilockdepth); if(up != nil && up->nlocks.ref) - print("qlock: %lux: nlocks %lud", getcallerpc(&q), up->nlocks.ref); + print("qlock: %lux: nlocks %lud\n", getcallerpc(&q), up->nlocks.ref); if(q->use.key == 0x55555555) panic("qlock: q %p, key 5*\n", q); [rsc] --rw-rw-r-- M 771144 glenda sys 6236 Feb 11 13:09 sys/src/9/pc/i8253.c /n/sourcesdump/2006/0211/plan9/sys/src/9/pc/i8253.c:201,207 - /n/sourcesdump/2006/0212/plan9/sys/src/9/pc/i8253.c:201,207 period = want - now; if(period < MinPeriod) period = MinPeriod; - else if(period > (4*MaxPeriod)/5) /* strong attraction to MaxPeriod */ + else if(period > MaxPeriod) period = MaxPeriod; }