#include "u.h" #include "../port/lib.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" void mmuinit(void) { print("mmuinit\n"); kernelmmu(); } void flushmmu(void) { // print("flushmmu()\n"); _flushmmu(); } void mmuswitch(Proc*) { flushmmu(); } void mmurelease(Proc* proc) { USED(proc); } void putmmu(ulong va, ulong pa, Page *pg) { int x, r; char *ctl; //if((va&0x8000000) == 0) //print("putmmu va=%ux pa=%ux\n", va, pa); x = splhi(); r = _putmmu(va, pa); ctl = &pg->cachectl[m->machno]; switch(*ctl) { default: panic("putmmu: %d\n", *ctl); break; case PG_NOFLUSH: break; case PG_TXTFLUSH: icflush((void*)pg->va, BY2PG); *ctl = PG_NOFLUSH; break; case PG_NEWCOL: dcflush((void*)pg->va, BY2PG); *ctl = PG_NOFLUSH; break; } splx(x); }