summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2010-06-05 06:56:06 +0000
committeralc <alc@FreeBSD.org>2010-06-05 06:56:06 +0000
commitcf537cadd571bccfeff1f58c6f30dc9a2ec27442 (patch)
tree699dffca72b38d21d0767f3795844acad73dc94f
parentbcf3a93c494f0ac112599b839fd325f7ee9fabf8 (diff)
downloadFreeBSD-src-cf537cadd571bccfeff1f58c6f30dc9a2ec27442.zip
FreeBSD-src-cf537cadd571bccfeff1f58c6f30dc9a2ec27442.tar.gz
Don't set PG_WRITEABLE in pmap_enter() unless the page is managed.
-rw-r--r--sys/powerpc/aim/mmu_oea.c3
-rw-r--r--sys/powerpc/aim/mmu_oea64.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/sys/powerpc/aim/mmu_oea.c b/sys/powerpc/aim/mmu_oea.c
index c3e8755..373b17e 100644
--- a/sys/powerpc/aim/mmu_oea.c
+++ b/sys/powerpc/aim/mmu_oea.c
@@ -1140,7 +1140,8 @@ moea_enter_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
if (prot & VM_PROT_WRITE) {
pte_lo |= PTE_BW;
- if (pmap_bootstrapped)
+ if (pmap_bootstrapped &&
+ (m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0)
vm_page_flag_set(m, PG_WRITEABLE);
} else
pte_lo |= PTE_BR;
diff --git a/sys/powerpc/aim/mmu_oea64.c b/sys/powerpc/aim/mmu_oea64.c
index 923a94f..8ff27d0 100644
--- a/sys/powerpc/aim/mmu_oea64.c
+++ b/sys/powerpc/aim/mmu_oea64.c
@@ -1249,7 +1249,8 @@ moea64_enter_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
if (prot & VM_PROT_WRITE) {
pte_lo |= LPTE_BW;
- if (pmap_bootstrapped)
+ if (pmap_bootstrapped &&
+ (m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0)
vm_page_flag_set(m, PG_WRITEABLE);
} else
pte_lo |= LPTE_BR;
OpenPOWER on IntegriCloud