pmap_cache_enable();
cpu_attach(parent, self, aux)	struct device *parent;	struct device *self;	void *aux;{	struct cpu_softc *sc = (struct cpu_softc *)self;	register int node;	register char *fpuname;	struct confargs *ca = aux;	char fpbuf[40];	char model[100];	sc->node = node = ca->ca_ra.ra_node;	/*	 * First, find out if we're attaching the boot CPU.	 */	if (node == 0)		sc->master = 1;	else {		sc->mid = getpropint(node, "mid", 0);		if (sc->mid == 0 || sc->mid == getmid() + 8 /*XXX*/)			sc->master = 1;	}	if (sc->master) {		/*		 * Gross, but some things in cpuinfo may already have		 * been setup by early routines like pmap_bootstrap().		 */		bcopy(&sc->dv, &cpuinfo, sizeof(sc->dv));		bcopy(&cpuinfo, sc, sizeof(cpuinfo));	}#if defined(SUN4C) || defined(SUN4M)	switch (cputyp) {#if defined(SUN4C)	case CPU_SUN4C:		cpu_class = "sun4c";		break;#endif /* defined(SUN4C) */#if defined(SUN4M)	case CPU_SUN4M:		cpu_class = "sun4m";		break;#endif /* defined(SUN4M) */	}#endif /* defined(SUN4C) || defined(SUN4M) */	getcpuinfo(sc, node);	fpuname = "no";	if (sc->master) {		if (sc->hotfix)			sc->hotfix(sc);		fpu_init(sc);		if (foundfpu)			fpuname = fsrtoname(sc->cpu_impl, sc->cpu_vers,			    sc->fpuvers, fpbuf);	}	/* XXX - multi-processor: take care of `cpu_model' and `foundfpu' */	sprintf(model, "%s @ %s MHz, %s FPU", sc->cpu_name,	    clockfreq(sc->hz), fpuname);	printf(": %s", model);	sprintf(cpu_model, "%s, %s", mainbus_model, model);	if (cpu_hotfix[0])		printf("; %s", cpu_hotfix);	printf("\n");	if (sc->cacheinfo.c_totalsize != 0)		cache_print(sc);	if (sc->master) {		int s;		bcopy(sc, &cpuinfo, sizeof(cpuinfo));		/*		 * Enable the cache		 *		 * Disable all interrupts because we don't want anything		 * nasty to happen to the pagetables while the cache is		 * enabled and we haven't uncached them yet.		 */		s = splhigh();		sc->cache_enable();		splx(s);		return;	}	/* Now start this CPU */}