Changeset View
Changeset View
Standalone View
Standalone View
sys/arm/arm/pmap-v6.c
Show First 20 Lines • Show All 3,867 Lines • ▼ Show 20 Lines | pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, | ||||
vm_page_t mpte2, om; | vm_page_t mpte2, om; | ||||
int rv; | int rv; | ||||
va = trunc_page(va); | va = trunc_page(va); | ||||
KASSERT(va <= vm_max_kernel_address, ("%s: toobig", __func__)); | KASSERT(va <= vm_max_kernel_address, ("%s: toobig", __func__)); | ||||
KASSERT(va < UPT2V_MIN_ADDRESS || va >= UPT2V_MAX_ADDRESS, | KASSERT(va < UPT2V_MIN_ADDRESS || va >= UPT2V_MAX_ADDRESS, | ||||
("%s: invalid to pmap_enter page table pages (va: 0x%x)", __func__, | ("%s: invalid to pmap_enter page table pages (va: 0x%x)", __func__, | ||||
va)); | va)); | ||||
KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva || | KASSERT((m->oflags & VPO_UNMANAGED) != 0 || !VA_IS_CLEANMAP(va), | ||||
va >= kmi.clean_eva, | |||||
("%s: managed mapping within the clean submap", __func__)); | ("%s: managed mapping within the clean submap", __func__)); | ||||
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, | ||||
("%s: flags %u has reserved bits set", __func__, flags)); | ("%s: flags %u has reserved bits set", __func__, flags)); | ||||
pa = VM_PAGE_TO_PHYS(m); | pa = VM_PAGE_TO_PHYS(m); | ||||
npte2 = PTE2(pa, PTE2_A, vm_page_pte2_attr(m)); | npte2 = PTE2(pa, PTE2_A, vm_page_pte2_attr(m)); | ||||
if ((flags & VM_PROT_WRITE) == 0) | if ((flags & VM_PROT_WRITE) == 0) | ||||
▲ Show 20 Lines • Show All 644 Lines • ▼ Show 20 Lines | |||||
pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, | pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, | ||||
vm_prot_t prot, vm_page_t mpt2pg) | vm_prot_t prot, vm_page_t mpt2pg) | ||||
{ | { | ||||
pt2_entry_t *pte2p, pte2; | pt2_entry_t *pte2p, pte2; | ||||
vm_paddr_t pa; | vm_paddr_t pa; | ||||
struct spglist free; | struct spglist free; | ||||
uint32_t l2prot; | uint32_t l2prot; | ||||
KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva || | KASSERT(!VA_IS_CLEANMAP(va) || | ||||
(m->oflags & VPO_UNMANAGED) != 0, | (m->oflags & VPO_UNMANAGED) != 0, | ||||
("%s: managed mapping within the clean submap", __func__)); | ("%s: managed mapping within the clean submap", __func__)); | ||||
rw_assert(&pvh_global_lock, RA_WLOCKED); | rw_assert(&pvh_global_lock, RA_WLOCKED); | ||||
PMAP_LOCK_ASSERT(pmap, MA_OWNED); | PMAP_LOCK_ASSERT(pmap, MA_OWNED); | ||||
/* | /* | ||||
* In the case that a L2 page table page is not | * In the case that a L2 page table page is not | ||||
* resident, we are creating it here. | * resident, we are creating it here. | ||||
▲ Show 20 Lines • Show All 2,410 Lines • Show Last 20 Lines |