Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/aim/mmu_radix.c
Show First 20 Lines • Show All 2,807 Lines • ▼ Show 20 Lines | mmu_radix_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, | ||||
boolean_t nosleep, invalidate_all, invalidate_page; | boolean_t nosleep, invalidate_all, invalidate_page; | ||||
va = trunc_page(va); | va = trunc_page(va); | ||||
retrycount = 0; | retrycount = 0; | ||||
invalidate_page = invalidate_all = false; | invalidate_page = invalidate_all = false; | ||||
CTR6(KTR_PMAP, "pmap_enter(%p, %#lx, %p, %#x, %#x, %d)", pmap, va, | CTR6(KTR_PMAP, "pmap_enter(%p, %#lx, %p, %#x, %#x, %d)", pmap, va, | ||||
m, prot, flags, psind); | m, prot, flags, psind); | ||||
KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); | KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); | ||||
KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva || | KASSERT((m->oflags & VPO_UNMANAGED) != 0 || !VA_IS_CLEANMAP(va), | ||||
va >= kmi.clean_eva, | |||||
("pmap_enter: managed mapping within the clean submap")); | ("pmap_enter: managed mapping within the clean submap")); | ||||
if ((m->oflags & VPO_UNMANAGED) == 0) | if ((m->oflags & VPO_UNMANAGED) == 0) | ||||
VM_PAGE_OBJECT_BUSY_ASSERT(m); | VM_PAGE_OBJECT_BUSY_ASSERT(m); | ||||
KASSERT((flags & PMAP_ENTER_RESERVED) == 0, | KASSERT((flags & PMAP_ENTER_RESERVED) == 0, | ||||
("pmap_enter: flags %u has reserved bits set", flags)); | ("pmap_enter: flags %u has reserved bits set", flags)); | ||||
pa = VM_PAGE_TO_PHYS(m); | pa = VM_PAGE_TO_PHYS(m); | ||||
newpte = (pt_entry_t)(pa | PG_A | PG_V | RPTE_LEAF); | newpte = (pt_entry_t)(pa | PG_A | PG_V | RPTE_LEAF); | ||||
▲ Show 20 Lines • Show All 467 Lines • ▼ Show 20 Lines | |||||
static vm_page_t | static vm_page_t | ||||
mmu_radix_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, | mmu_radix_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, | ||||
vm_prot_t prot, vm_page_t mpte, struct rwlock **lockp, bool *invalidate) | vm_prot_t prot, vm_page_t mpte, struct rwlock **lockp, bool *invalidate) | ||||
{ | { | ||||
struct spglist free; | struct spglist free; | ||||
pt_entry_t *pte; | pt_entry_t *pte; | ||||
vm_paddr_t pa; | vm_paddr_t pa; | ||||
KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva || | KASSERT(!VA_IS_CLEANMAP(va) || | ||||
(m->oflags & VPO_UNMANAGED) != 0, | (m->oflags & VPO_UNMANAGED) != 0, | ||||
("mmu_radix_enter_quick_locked: managed mapping within the clean submap")); | ("mmu_radix_enter_quick_locked: managed mapping within the clean submap")); | ||||
PMAP_LOCK_ASSERT(pmap, MA_OWNED); | PMAP_LOCK_ASSERT(pmap, MA_OWNED); | ||||
/* | /* | ||||
* In the case that a page table page is not | * In the case that a page table page is not | ||||
* resident, we are creating it here. | * resident, we are creating it here. | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 3,128 Lines • Show Last 20 Lines |