#include "u.h" #include "../port/lib.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" void *ptab; ulong ptabsize; void mmuinit(void) { int lhash, mem; extern ulong memsize; /* passed in from ROM monitor */ /* heuristically size the hash table */ lhash = 10; /* log of hash table size */ mem = (1<<23); while(mem < memsize) { lhash++; mem <<= 1; } ptabsize = (1<<(lhash+6)); ptab = xspanalloc(ptabsize, 0, ptabsize); putsdr1(PADDR(ptab) | ((1<<(lhash-10))-1)); } void flushmmu(void) { int x; x = splhi(); up->newtlb = 1; mmuswitch(up); splx(x); } /* * called with splhi */ void mmuswitch(Proc *p) { int mp; if(p->newtlb) { p->mmupid = 0; p->newtlb = 0; } mp = p->mmupid; if(mp == 0) mp = newmmupid(); // for(i = 0; i < 8; i++) // putsr(i, } void mmurelease(Proc* p) { p->mmupid = 0; } void putmmu(ulong va, ulong pa, Page *pg) { } int newmmupid(void) { return -1; }