summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Rahn <drahn@cvs.openbsd.org>2001-02-20 04:29:09 +0000
committerDale Rahn <drahn@cvs.openbsd.org>2001-02-20 04:29:09 +0000
commit8382e5849521d0bc5f4be6aa3218d52ed1431002 (patch)
tree31e7171b77640bbf17ac464e8ad842c50f3e39ed
parente3aa51af084f763769932c3691ab9e6728be4abe (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.c15
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);