diff options
author | alc <alc@FreeBSD.org> | 2010-06-05 18:20:09 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2010-06-05 18:20:09 +0000 |
commit | b11ca4bc203aade138ee2578a7ac84661dcb5cb0 (patch) | |
tree | 91a10245204cfc5aa4299b7073aef191057b7b38 /sys/powerpc | |
parent | e725fc3e76f91c848117ba682217db115abb350f (diff) | |
download | FreeBSD-src-b11ca4bc203aade138ee2578a7ac84661dcb5cb0.zip FreeBSD-src-b11ca4bc203aade138ee2578a7ac84661dcb5cb0.tar.gz |
Don't set PG_WRITEABLE in pmap_enter() unless the page is managed.
Correct a typo in a nearby comment on sparc64.
Diffstat (limited to 'sys/powerpc')
-rw-r--r-- | sys/powerpc/booke/pmap.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index ca48adc..4bc5e93 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -1596,7 +1596,8 @@ mmu_booke_enter_locked(mmu_t mmu, pmap_t pmap, vm_offset_t va, vm_page_t m, if (!su) flags |= PTE_UW; - vm_page_flag_set(m, PG_WRITEABLE); + if ((flags & PTE_MANAGED) != 0) + vm_page_flag_set(m, PG_WRITEABLE); } else { /* Handle modified pages, sense modify status. */ @@ -1662,7 +1663,8 @@ mmu_booke_enter_locked(mmu_t mmu, pmap_t pmap, vm_offset_t va, vm_page_t m, if (!su) flags |= PTE_UW; - vm_page_flag_set(m, PG_WRITEABLE); + if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0) + vm_page_flag_set(m, PG_WRITEABLE); } if (prot & VM_PROT_EXECUTE) { |