summaryrefslogtreecommitdiff
path: root/sys/src/9/pc/mmu.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2019-12-07 02:19:14 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2019-12-07 02:19:14 +0100
commit13785bbbef60f5c13aa973c1e7d4277aa55f6a2d (patch)
tree0b4f72db3969ca9de5b7804f3491ef7d7ae5d08d /sys/src/9/pc/mmu.c
parent28836f3ff593f729a9dc92b67a6f99382bc84c28 (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.c22
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)
- ;
- }
}
/*