PERFORCE change 55012 for review

Juli Mallett jmallett at FreeBSD.org
Tue Jun 15 12:04:38 GMT 2004


http://perforce.freebsd.org/chv.cgi?CH=55012

Change 55012 by jmallett at jmallett_oingo on 2004/06/15 12:04:10

	Attach cpu as a device, attach mainbus off that, make mainbus a
	property of the platform, kill platform_configure() in favor of
	something that goes through newbus.  This is in preparation of
	being able to hang the main interrupt stuff and clock off the
	cpu.

Affected files ...

.. //depot/projects/mips/sys/conf/files.mips#37 edit
.. //depot/projects/mips/sys/mips/include/hwfunc.h#5 edit
.. //depot/projects/mips/sys/mips/mips/autoconf.c#5 edit
.. //depot/projects/mips/sys/mips/mips/cpu.c#3 edit
.. //depot/projects/mips/sys/mips/mips/machdep.c#45 edit
.. //depot/projects/mips/sys/mips/sgimips/imc/imc.c#9 edit
.. //depot/projects/mips/sys/mips/sgimips/machdep_sgimips.c#35 edit
.. //depot/projects/mips/sys/mips/sgimips/mainbus.c#1 add

Differences ...

==== //depot/projects/mips/sys/conf/files.mips#37 (text+ko) ====

@@ -47,6 +47,7 @@
 geom/geom_fx.c			optional	sgimips
 mips/sgimips/clock.c		optional	sgimips
 mips/sgimips/machdep_sgimips.c	optional	sgimips
+mips/sgimips/mainbus.c		optional	sgimips
 
 mips/sbmips/clock.c		optional	sbmips
 mips/sbmips/machdep_sbmips.c	optional	sbmips

==== //depot/projects/mips/sys/mips/include/hwfunc.h#5 (text+ko) ====

@@ -34,7 +34,6 @@
  * Hooks downward into hardware functionality.
  */
 
-void platform_configure(void);
 void platform_halt(void);
 void platform_intr(struct trapframe *);
 void platform_reset(void);

==== //depot/projects/mips/sys/mips/mips/autoconf.c#5 (text+ko) ====

@@ -38,7 +38,13 @@
 static void
 configure(void *arg)
 {
-	platform_configure();
+	device_t cpu;
+	
+	cpu = device_add_child(root_bus, "cpu", 0); /* XXX mp_ncpus */
+	if (cpu == NULL)
+		panic("cpu didn't attach");
+	device_add_child(cpu, "mainbus", 0);
+
 	root_bus_configure();
 
 	/* Enable interrupts.  */

==== //depot/projects/mips/sys/mips/mips/cpu.c#3 (text+ko) ====

@@ -184,3 +184,43 @@
 	printf("\n");
 	printf("XXX should print cache identification here\n");
 }
+
+static devclass_t cpu_devclass;
+
+/*
+ * Device methods
+ */
+static int cpu_probe(device_t);
+
+static device_method_t cpu_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_probe,		cpu_probe),
+	DEVMETHOD(device_attach,	bus_generic_attach),
+	DEVMETHOD(device_detach,	bus_generic_detach),
+	DEVMETHOD(device_shutdown,	bus_generic_shutdown),
+
+	/* XXXJM TODO DONGS ETC.  Allocate hard/soft intrs off this.  */
+	/* Bus interface */
+	DEVMETHOD(bus_setup_intr,	bus_generic_setup_intr),
+	DEVMETHOD(bus_teardown_intr,	bus_generic_teardown_intr),
+
+	{ 0, 0 }
+};
+
+static driver_t cpu_driver = {
+	"cpu", cpu_methods, 1
+};
+
+static int
+cpu_probe(device_t dev)
+{
+	struct wtf wtf;
+
+	if (device_get_unit(dev) != 0)
+		panic("can't attach more cpus");
+
+	mips_wtf(&wtf);
+	device_set_desc(dev, wtf.wtf_type);
+	return (0);
+}
+DRIVER_MODULE(cpu, root, cpu_driver, cpu_devclass, 0, 0);

==== //depot/projects/mips/sys/mips/mips/machdep.c#45 (text+ko) ====


==== //depot/projects/mips/sys/mips/sgimips/imc/imc.c#9 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/mips/sys/mips/sgimips/imc/imc.c#8 $
+ * $P4: //depot/projects/mips/sys/mips/sgimips/imc/imc.c#9 $
  */
 
 #include <sys/cdefs.h>
@@ -205,4 +205,4 @@
 	IMC_WRITE_4(port, IMC_GIO_ERRSTAT, 0);
 }
 
-DRIVER_MODULE(imc, root, imc_driver, imc_devclass, 0, 0);
+DRIVER_MODULE(imc, mainbus, imc_driver, imc_devclass, 0, 0);

==== //depot/projects/mips/sys/mips/sgimips/machdep_sgimips.c#35 (text+ko) ====

@@ -247,20 +247,6 @@
 	KASSERT(i == 0, ("all interrupts handled"));
 }
 
-void
-platform_configure(void)
-{
-	switch (mach_type) {
-	case MACH_SGI_IP22:
-		device_add_child(root_bus, "imc", 0);
-		device_add_child(root_bus, "arcs_disk", 0);
-		break;
-	default:
-		panic("cannot autoconfigure type %d", mach_type);
-		break;
-	}
-}
-
 /*
  * XXX Maybe return the state of the watchdog in enter, and pass it to
  * exit?  Like spl().


More information about the p4-projects mailing list