diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-12-07 02:19:14 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-12-07 02:19:14 +0100 |
commit | 13785bbbef60f5c13aa973c1e7d4277aa55f6a2d (patch) | |
tree | 0b4f72db3969ca9de5b7804f3491ef7d7ae5d08d /sys/src/9/pc/mmu.c | |
parent | 28836f3ff593f729a9dc92b67a6f99382bc84c28 (diff) |
pc: replace duplicated and broken mmu flush code in vunmap()
comparing m with MACHP() is wrong as m is a constant on 386.
add procflushothers(), which flushes all processes except up
using common procflushmmu() routine.
Diffstat (limited to 'sys/src/9/pc/mmu.c')
-rw-r--r-- | sys/src/9/pc/mmu.c | 22 |
1 files changed, 1 insertions, 21 deletions
diff --git a/sys/src/9/pc/mmu.c b/sys/src/9/pc/mmu.c index 383ba7d91..c9ff28abb 100644 --- a/sys/src/9/pc/mmu.c +++ b/sys/src/9/pc/mmu.c @@ -643,10 +643,7 @@ vmapalloc(ulong size) void vunmap(void *v, int size) { - int i; ulong va, o; - Mach *nm; - Proc *p; /* * might not be aligned @@ -675,25 +672,8 @@ vunmap(void *v, int size) putcr3(PADDR(MACHP(0)->pdb)); return; } - for(i=0; i<conf.nproc; i++){ - p = proctab(i); - if(p->state == Dead) - continue; - if(p != up) - p->newtlb = 1; - } - for(i=0; i<conf.nmach; i++){ - nm = MACHP(i); - if(nm != m) - nm->flushmmu = 1; - } + procflushothers(); flushmmu(); - for(i=0; i<conf.nmach; i++){ - nm = MACHP(i); - if(nm != m) - while(active.machs[nm->machno] && nm->flushmmu) - ; - } } /* |