Changeset View
Changeset View
Standalone View
Standalone View
sys/i386/i386/pmap.c
Show First 20 Lines • Show All 3,648 Lines • ▼ Show 20 Lines | __CONCAT(PMTYPE, enter)(pmap_t pmap, vm_offset_t va, vm_page_t m, | ||||
va = trunc_page(va); | va = trunc_page(va); | ||||
KASSERT((pmap == kernel_pmap && va < VM_MAX_KERNEL_ADDRESS) || | KASSERT((pmap == kernel_pmap && va < VM_MAX_KERNEL_ADDRESS) || | ||||
(pmap != kernel_pmap && va < VM_MAXUSER_ADDRESS), | (pmap != kernel_pmap && va < VM_MAXUSER_ADDRESS), | ||||
("pmap_enter: toobig k%d %#x", pmap == kernel_pmap, va)); | ("pmap_enter: toobig k%d %#x", pmap == kernel_pmap, va)); | ||||
KASSERT(va < PMAP_TRM_MIN_ADDRESS, | KASSERT(va < PMAP_TRM_MIN_ADDRESS, | ||||
("pmap_enter: invalid to pmap_enter into trampoline (va: 0x%x)", | ("pmap_enter: invalid to pmap_enter into trampoline (va: 0x%x)", | ||||
va)); | va)); | ||||
KASSERT(pmap != kernel_pmap || (m->oflags & VPO_UNMANAGED) != 0 || | KASSERT(pmap != kernel_pmap || (m->oflags & VPO_UNMANAGED) != 0 || | ||||
va < kmi.clean_sva || va >= kmi.clean_eva, | !VA_IS_CLEANMAP(va), | ||||
("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); | newpte = (pt_entry_t)(pa | PG_A | PG_V); | ||||
if ((flags & VM_PROT_WRITE) != 0) | if ((flags & VM_PROT_WRITE) != 0) | ||||
▲ Show 20 Lines • Show All 437 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
static vm_page_t | static vm_page_t | ||||
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 mpte) | vm_prot_t prot, vm_page_t mpte) | ||||
{ | { | ||||
pt_entry_t newpte, *pte; | pt_entry_t newpte, *pte; | ||||
KASSERT(pmap != kernel_pmap || va < kmi.clean_sva || | KASSERT(pmap != kernel_pmap || !VA_IS_CLEANMAP(va) || | ||||
va >= kmi.clean_eva || (m->oflags & VPO_UNMANAGED) != 0, | (m->oflags & VPO_UNMANAGED) != 0, | ||||
("pmap_enter_quick_locked: managed mapping within the clean submap")); | ("pmap_enter_quick_locked: managed mapping within the clean submap")); | ||||
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 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 2,288 Lines • Show Last 20 Lines |