diff options
author | alc <alc@FreeBSD.org> | 2010-06-05 06:56:06 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2010-06-05 06:56:06 +0000 |
commit | cf537cadd571bccfeff1f58c6f30dc9a2ec27442 (patch) | |
tree | 699dffca72b38d21d0767f3795844acad73dc94f | |
parent | bcf3a93c494f0ac112599b839fd325f7ee9fabf8 (diff) | |
download | FreeBSD-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.c | 3 | ||||
-rw-r--r-- | sys/powerpc/aim/mmu_oea64.c | 3 |
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; |