diff options
author | Dale Rahn <drahn@cvs.openbsd.org> | 2001-02-20 04:29:09 +0000 |
---|---|---|
committer | Dale Rahn <drahn@cvs.openbsd.org> | 2001-02-20 04:29:09 +0000 |
commit | 8382e5849521d0bc5f4be6aa3218d52ed1431002 (patch) | |
tree | 31e7171b77640bbf17ac464e8ad842c50f3e39ed | |
parent | e3aa51af084f763769932c3691ab9e6728be4abe (diff) |
Adhere to VM/UVM pager requirements, do not unmap pager mappings.
recognize pager_sva/pager_eva. Does not seem to change anything under UVM
but is recommended, may have been the cause for the "pmap" bug under VM.
Test compiled for VM, but not run.
Ok'd by art.
-rw-r--r-- | sys/arch/powerpc/powerpc/pmap.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/arch/powerpc/powerpc/pmap.c b/sys/arch/powerpc/powerpc/pmap.c index 9a2908b3832..783ee2996b0 100644 --- a/sys/arch/powerpc/powerpc/pmap.c +++ b/sys/arch/powerpc/powerpc/pmap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pmap.c,v 1.22 2001/02/16 05:18:06 drahn Exp $ */ +/* $OpenBSD: pmap.c,v 1.23 2001/02/20 04:29:08 drahn Exp $ */ /* $NetBSD: pmap.c,v 1.1 1996/09/30 16:34:52 ws Exp $ */ /* @@ -68,6 +68,10 @@ static u_int nextavail; static struct mem_region *mem, *avail; +#ifndef UVM + extern vm_offset_t pager_sva, pager_eva; +#endif + #if 1 void dump_avail() @@ -1544,6 +1548,15 @@ pmap_page_protect(pa, prot) while (pv->pv_idx != -1) { va = pv->pv_va; pm = pv->pv_pmap; +#ifdef UVM + if ((va >=uvm.pager_sva) && (va < uvm.pager_eva)) { + continue; + } +#else + if (va >= pager_sva && va < pager_eva) { + continue; + } +#endif pmap_remove(pm, va, va + NBPG); } splx(s); |