From e08c0f98f0ce491b65857608fe565bdb376dbe70 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sat, 9 Sep 2000 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2000-09-09 --- bitsy/mmu.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/bitsy/mmu.c b/bitsy/mmu.c index d5386004cfae8633353591278f8b6f680dfb172d..58048cbda02867ecde80bd4841046e63683cfdaa 100644 --- a/bitsy/mmu.c +++ b/bitsy/mmu.c @@ -94,30 +94,33 @@ mmuinit(void) * map special use space */ ulong* -mapspecial(ulong addr, int len) +mapspecial(ulong physaddr, int len) { ulong *t; - ulong a, i; + ulong virtaddr, i; /* first see if we've mapped it somewhere, the first hole means we're done */ - for(a = REGZERO; a < REGTOP; a += OneMeg){ - if((l1table[a>>20] & L1TypeMask) != L1PageTable){ + for(virtaddr = REGZERO; virtaddr < REGTOP; virtaddr += OneMeg){ + if((l1table[virtaddr>>20] & L1TypeMask) != L1PageTable){ /* create a page table and break */ t = xspanalloc(BY2PG, 1024, 0); memzero(t, BY2PG, 0); - l1table[a>>20] = L1PageTable | L1Domain0 | (((ulong)t) & L1PTBaseMask); + l1table[virtaddr>>20] = L1PageTable | L1Domain0 | (((ulong)t) & L1PTBaseMask); break; } - t = (ulong*)(l1table[a>>20] & L1PTBaseMask); + t = (ulong*)(l1table[virtaddr>>20] & L1PTBaseMask); for(i = 0; i < OneMeg; i += BY2PG){ - if((t[a>>20] & L2TypeMask) != L2SmallPage) + if((t[virtaddr>>20] & L2TypeMask) != L2SmallPage) break; } if(i < OneMeg){ - a += i; + virtaddr += i; break; } } + + /* we get here if no entry was found mapping this physical address */ + } void