Changeset View
Changeset View
Standalone View
Standalone View
head/sys/arm/arm/pmap-v6.c
Show First 20 Lines • Show All 2,967 Lines • ▼ Show 20 Lines | free_pv_chunk(struct pv_chunk *pc) | ||||
TAILQ_REMOVE(&pv_chunks, pc, pc_lru); | TAILQ_REMOVE(&pv_chunks, pc, pc_lru); | ||||
PV_STAT(pv_entry_spare -= _NPCPV); | PV_STAT(pv_entry_spare -= _NPCPV); | ||||
PV_STAT(pc_chunk_count--); | PV_STAT(pc_chunk_count--); | ||||
PV_STAT(pc_chunk_frees++); | PV_STAT(pc_chunk_frees++); | ||||
/* entire chunk is free, return it */ | /* entire chunk is free, return it */ | ||||
m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc)); | m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc)); | ||||
pmap_qremove((vm_offset_t)pc, 1); | pmap_qremove((vm_offset_t)pc, 1); | ||||
vm_page_unwire(m, PQ_NONE); | vm_page_unwire_noq(m); | ||||
vm_page_free(m); | vm_page_free(m); | ||||
pmap_pte2list_free(&pv_vafree, (vm_offset_t)pc); | pmap_pte2list_free(&pv_vafree, (vm_offset_t)pc); | ||||
} | } | ||||
/* | /* | ||||
* Free the pv_entry back to the free list. | * Free the pv_entry back to the free list. | ||||
*/ | */ | ||||
static void | static void | ||||
▲ Show 20 Lines • Show All 3,998 Lines • Show Last 20 Lines |