pvh->pvh_list = NULL;
pmap_page_remove(pg)	struct vm_page *pg;{	struct pv_head *pvh;	struct pv_entry *pve, *ppve;	pt_entry_t *pde, pte;	int bank, off;	DPRINTF(PDB_FOLLOW|PDB_PV, ("pmap_page_remove(%p)\n", pg));	bank = vm_physseg_find(atop(VM_PAGE_TO_PHYS(pg)), &off);	if (bank == -1) {		printf("pmap_page_remove: unmanaged page?\n");		return;	}	pvh = &vm_physmem[bank].pmseg.pvhead[off];	if (pvh->pvh_list == NULL)		return;	simple_lock(&pvh->pvh_lock);	for (pve = pvh->pvh_list; pve; ) {		simple_lock(&pve->pv_pmap->pm_obj.vmobjlock);		pde = pmap_pde_get(pve->pv_pmap->pm_pdir, pve->pv_va);		pte = pmap_pte_get(pde, pve->pv_va);		pmap_pte_set(pde, pve->pv_va, 0);		if (pte & PTE_PROT(TLB_WIRED))			pve->pv_pmap->pm_stats.wired_count--;		pve->pv_pmap->pm_stats.resident_count--;		simple_unlock(&pve->pmap->pm_obj.vmobjlock);		pvh->pvh_attrs |= pmap_pvh_attrs(pte);		ppve = pve;		pve = pve->pv_next;		pmap_pv_free(ppve);	}	simple_unlock(&pvh->pvh_lock);	DPRINTF(PDB_FOLLOW|PDB_PV, ("pmap_page_remove: leaving\n"));}