panic("pmap_changebit: pte %x in pmap %x %d doesn't point to page %x %x",
panic("pmap_changebit: pte %x in pmap %p %d doesn't point to page %p %lx",
pmap_changebit(struct vm_page *pg, int set, int mask){	pv_entry_t pvl, pvep;	pt_entry_t *pte, npte, opte;	pmap_t pmap;	int spl;	vaddr_t va;	u_int users;	boolean_t kflush;	SPLVM(spl);changebit_Retry:	pvl = pg_to_pvh(pg);	/*	 * Clear saved attributes (modify, reference)	 */	pvl->pv_flags &= mask;	if (pvl->pv_pmap == PMAP_NULL) {#ifdef DEBUG		if (pmap_con_dbg & CD_CBIT)			printf("(pmap_changebit: %x) vm page 0x%x not mapped\n",			    curproc, pg);#endif		SPLX(spl);		return;	}	/* for each listed pmap, update the affected bits */	for (pvep = pvl; pvep != PV_ENTRY_NULL; pvep = pvep->pv_next) {		pmap = pvep->pv_pmap;		if (!simple_lock_try(&pmap->pm_lock)) {			goto changebit_Retry;		}		users = pmap->pm_cpus;		if (pmap == kernel_pmap) {			kflush = TRUE;		} else {			kflush = FALSE;		}		va = pvep->pv_va;		pte = pmap_pte(pmap, va);		/*		 * Check for existing and valid pte		 */		if (pte == PT_ENTRY_NULL || !PDT_VALID(pte)) {			goto next;	 /* no page mapping */		}#ifdef DIAGNOSTIC		if (ptoa(PG_PFNUM(*pte)) != VM_PAGE_TO_PHYS(pg))			panic("pmap_changebit: pte %x in pmap %x %d doesn't point to page %x %x",			    *pte, pmap, kflush, pg, VM_PAGE_TO_PHYS(pg));#endif		/*		 * Update bits		 */		opte = *pte;		npte = (opte | set) & mask;		/*		 * Flush TLB of which cpus using pmap.		 *		 * Invalidate pte temporarily to avoid the modified bit		 * and/or the reference being written back by any other cpu.		 */		if (npte != opte) {			invalidate_pte(pte);			*pte = npte;			flush_atc_entry(users, va, kflush);		}next:		simple_unlock(&pmap->pm_lock);	}	SPLX(spl);}