tlb_flush_page((vaddr_t)va);
kvm_setcache(va, npages, cached)	caddr_t va;	int npages;	int cached;{	int pte;	struct pvlist *pv;	if (CPU_ISSUN4M) {#if defined(SUN4M)		int ctx = getcontext4m();		setcontext4m(0);		for (; --npages >= 0; va += NBPG) {			int *ptep;			ptep = getptep4m(pmap_kernel(), (vaddr_t)va);			tlb_flush_page((vaddr_t)va);			pte = *ptep;#ifdef DIAGNOSTIC			if ((pte & SRMMU_TETYPE) != SRMMU_TEPTE)				panic("kvm_uncache: table entry not pte");#endif			pv = pvhead((pte & SRMMU_PPNMASK) >> SRMMU_PPNSHIFT);			if (pv) {				if (cached)					pv_changepte4m(pv, SRMMU_PG_C, 0);				else					pv_changepte4m(pv, 0, SRMMU_PG_C);			}			if (cached)				pte |= SRMMU_PG_C;			else				pte &= ~SRMMU_PG_C;			setpgt4m(ptep, pte);			if ((pte & SRMMU_PGTYPE) == PG_SUN4M_OBMEM)				cache_flush_page((int)va);		}		setcontext4m(ctx);#endif	} else {#if defined(SUN4) || defined(SUN4C)		for (; --npages >= 0; va += NBPG) {			pte = getpte4(va);			if ((pte & PG_V) == 0)				panic("kvm_uncache !pg_v");			pv = pvhead(pte & PG_PFNUM);			/* XXX - we probably don't need to check for OBMEM */			if ((pte & PG_TYPE) == PG_OBMEM && pv) {				if (cached)					pv_changepte4_4c(pv, 0, PG_NC);				else					pv_changepte4_4c(pv, PG_NC, 0);			}			if (cached)				pte &= ~PG_NC;			else				pte |= PG_NC;			setpte4(va, pte);			if ((pte & PG_TYPE) == PG_OBMEM)				cache_flush_page((int)va);		}#endif	}}