Module Name:    src
Committed By:   cliff
Date:           Wed Jan 13 09:43:07 UTC 2010

Modified Files:
        src/sys/arch/mips/rmi [matt-nb5-mips64]: rmixl_mainbus.c

Log Message:
- nuke mainbussearch()
- use config_found (vs. config_search_ia) for cpucore's and obio
- print L2 cache attributes


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/arch/mips/rmi/rmixl_mainbus.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/rmi/rmixl_mainbus.c
diff -u src/sys/arch/mips/rmi/rmixl_mainbus.c:1.1.2.3 src/sys/arch/mips/rmi/rmixl_mainbus.c:1.1.2.4
--- src/sys/arch/mips/rmi/rmixl_mainbus.c:1.1.2.3	Mon Nov  9 10:03:28 2009
+++ src/sys/arch/mips/rmi/rmixl_mainbus.c	Wed Jan 13 09:43:07 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: rmixl_mainbus.c,v 1.1.2.3 2009/11/09 10:03:28 cliff Exp $	*/
+/*	$NetBSD: rmixl_mainbus.c,v 1.1.2.4 2010/01/13 09:43:07 cliff Exp $	*/
 
 /*
  * Copyright (c) 1994,1995 Mark Brinicombe.
@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rmixl_mainbus.c,v 1.1.2.3 2009/11/09 10:03:28 cliff Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rmixl_mainbus.c,v 1.1.2.4 2010/01/13 09:43:07 cliff Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -51,12 +51,13 @@
 #include <sys/malloc.h>
 #include <sys/device.h>
 
+#include <evbmips/rmixl/autoconf.h>
 #include <machine/bus.h>
 #include "locators.h"
 
 static int  mainbusmatch(device_t,  cfdata_t, void *);
 static void mainbusattach(device_t,  device_t,  void *);
-static int  mainbussearch(device_t,  cfdata_t, const int *, void *);
+static int  mainbus_print_core(void *, const char *);
 
 CFATTACH_DECL_NEW(mainbus, 0, mainbusmatch, mainbusattach, NULL, NULL);
 
@@ -70,21 +71,62 @@
 	return 1;
 }
 
-static int
-mainbussearch(device_t parent, cfdata_t cf, const int *ldesc, void *aux)
-{
-	if (config_match(parent, cf, NULL) > 0)
-		config_attach(parent, cf, aux, NULL);
-
-	return 0;
-}
-
 static void
 mainbusattach(device_t parent, device_t self, void *aux)
 {
+	u_int sz;
+	u_int ncores;
+	struct mainbus_attach_args aa;
+
 	aprint_naive("\n");
 	aprint_normal("\n");
 
 	mainbus_found = 1;
-	config_search_ia(mainbussearch, self, "mainbus", NULL);
+
+	switch (mycpu->cpu_cidflags & MIPS_CIDFL_RMI_TYPE) {
+	case CIDFL_RMI_TYPE_XLR:
+	case CIDFL_RMI_TYPE_XLS:
+		/*
+		 * L2 is unified on XLR, XLS
+		 */
+		sz = (size_t)MIPS_CIDFL_RMI_L2SZ(mycpu->cpu_cidflags);
+		aprint_normal("%s: %dKB/32B %d-banked 8-way set associative"
+			" unified L2 cache\n", device_xname(self),
+			sz/1024, sz/(256 * 1024));
+		break;
+	case CIDFL_RMI_TYPE_XLP:
+		/* TBD */
+		break;
+	}
+
+	ncores = MIPS_CIDFL_RMI_NTHREADS(mycpu->cpu_cidflags);
+	aprint_normal("%s: %d %s on chip\n", device_xname(self), ncores,
+		ncores == 1 ? "core" : "cores");
+
+	/*
+	 * Attach cpu (RMI thread) devices
+	 */
+	for (int i=0; i < ncores; i++) {
+		aa.ma_name = "cpucore";
+		aa.ma_core = i;
+		config_found(self, &aa, mainbus_print_core);
+	}
+
+	/*
+	 * Attach obio
+	 */
+	aa.ma_name = "obio";
+	config_found(self, &aa, NULL);
+}
+
+static int
+mainbus_print_core(void *aux, const char *pnp)
+{
+	struct mainbus_attach_args *aa = aux;
+
+	if (pnp != NULL)
+		aprint_normal("%s: ", pnp);
+	aprint_normal("core %d", aa->ma_core);
+
+	return (UNCONF);
 }

Reply via email to