Changeset View
Changeset View
Standalone View
Standalone View
head/sys/mips/mips/pmap.c
Show First 20 Lines • Show All 1,153 Lines • ▼ Show 20 Lines | if (ptepindex >= NUPDE) { | ||||
vm_page_t pg; | vm_page_t pg; | ||||
pdep = &pmap->pm_segtab[segindex]; | pdep = &pmap->pm_segtab[segindex]; | ||||
if (*pdep == NULL) { | if (*pdep == NULL) { | ||||
/* recurse for allocating page dir */ | /* recurse for allocating page dir */ | ||||
if (_pmap_allocpte(pmap, NUPDE + segindex, | if (_pmap_allocpte(pmap, NUPDE + segindex, | ||||
flags) == NULL) { | flags) == NULL) { | ||||
/* alloc failed, release current */ | /* alloc failed, release current */ | ||||
--m->wire_count; | vm_page_unwire_noq(m); | ||||
atomic_subtract_int(&vm_cnt.v_wire_count, 1); | |||||
vm_page_free_zero(m); | vm_page_free_zero(m); | ||||
return (NULL); | return (NULL); | ||||
} | } | ||||
} else { | } else { | ||||
pg = PHYS_TO_VM_PAGE(MIPS_DIRECT_TO_PHYS(*pdep)); | pg = PHYS_TO_VM_PAGE(MIPS_DIRECT_TO_PHYS(*pdep)); | ||||
pg->wire_count++; | pg->wire_count++; | ||||
} | } | ||||
/* Next level entry */ | /* Next level entry */ | ||||
▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | pmap_release(pmap_t pmap) | ||||
KASSERT(pmap->pm_stats.resident_count == 0, | KASSERT(pmap->pm_stats.resident_count == 0, | ||||
("pmap_release: pmap resident count %ld != 0", | ("pmap_release: pmap resident count %ld != 0", | ||||
pmap->pm_stats.resident_count)); | pmap->pm_stats.resident_count)); | ||||
ptdva = (vm_offset_t)pmap->pm_segtab; | ptdva = (vm_offset_t)pmap->pm_segtab; | ||||
ptdpg = PHYS_TO_VM_PAGE(MIPS_DIRECT_TO_PHYS(ptdva)); | ptdpg = PHYS_TO_VM_PAGE(MIPS_DIRECT_TO_PHYS(ptdva)); | ||||
ptdpg->wire_count--; | vm_page_unwire_noq(ptdpg); | ||||
atomic_subtract_int(&vm_cnt.v_wire_count, 1); | |||||
vm_page_free_zero(ptdpg); | vm_page_free_zero(ptdpg); | ||||
} | } | ||||
/* | /* | ||||
* grow the number of kernel page table entries, if needed | * grow the number of kernel page table entries, if needed | ||||
*/ | */ | ||||
void | void | ||||
pmap_growkernel(vm_offset_t addr) | pmap_growkernel(vm_offset_t addr) | ||||
▲ Show 20 Lines • Show All 2,395 Lines • Show Last 20 Lines |