summaryrefslogtreecommitdiff
path: root/sys/arch/aviion/dev
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2010-04-24 18:46:56 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2010-04-24 18:46:56 +0000
commit2cc5b2d5ea4e4207a448f7192d0a59cef474df9a (patch)
tree63f27fae1e6ea1ec68f30b73c2ea515abfdbd367 /sys/arch/aviion/dev
parent743a79e922aded7a34218322df7491c49049127d (diff)
SMP support for models 4600 and 530, adapted from the MVME188 code. Models
4000 and 4300 will need more work, because they don't have as many distinct software interrupt sources as required by this implementation, so a different IPI scheme will be necessary. Tested on dual-processor 4625 (AV530 family) and single processor 4300 (AV400 family).
Diffstat (limited to 'sys/arch/aviion/dev')
-rw-r--r--sys/arch/aviion/dev/dart.c4
-rw-r--r--sys/arch/aviion/dev/mainbus.c11
2 files changed, 12 insertions, 3 deletions
diff --git a/sys/arch/aviion/dev/dart.c b/sys/arch/aviion/dev/dart.c
index abbe4d799b3..fe83d35661e 100644
--- a/sys/arch/aviion/dev/dart.c
+++ b/sys/arch/aviion/dev/dart.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dart.c,v 1.8 2010/04/12 12:57:51 tedu Exp $ */
+/* $OpenBSD: dart.c,v 1.9 2010/04/24 18:46:55 miod Exp $ */
/*
* Mach Operating System
@@ -812,7 +812,7 @@ dartintr(void *arg)
* ready change on a disabled port). This should not happen,
* but we have to claim the interrupt anyway.
*/
-#ifdef DIAGNOSTIC
+#if defined(DIAGNOSTIC) && !defined(MULTIPROCESSOR)
printf("%s: spurious interrupt, isr %x imr %x\n",
sc->sc_dev.dv_xname, isr, imr);
#endif
diff --git a/sys/arch/aviion/dev/mainbus.c b/sys/arch/aviion/dev/mainbus.c
index 18ae8edb097..0c8047ce701 100644
--- a/sys/arch/aviion/dev/mainbus.c
+++ b/sys/arch/aviion/dev/mainbus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mainbus.c,v 1.5 2010/04/24 18:44:27 miod Exp $ */
+/* $OpenBSD: mainbus.c,v 1.6 2010/04/24 18:46:55 miod Exp $ */
/*
* Copyright (c) 1998 Steve Murphree, Jr.
* Copyright (c) 2004, Miodrag Vallat.
@@ -128,6 +128,7 @@ mainbus_match(struct device *parent, void *cf, void *args)
void
mainbus_attach(struct device *parent, struct device *self, void *args)
{
+ extern void cpu_setup_secondary_processors(void);
extern char cpu_model[];
printf(": %s, cpuid 0x%04x", cpu_model, cpuid);
@@ -138,6 +139,14 @@ mainbus_attach(struct device *parent, struct device *self, void *args)
*/
cpu_configuration_print(1);
+#ifdef MULTIPROCESSOR
+ /*
+ * Let secondary processor initialize further and print their
+ * configuration information now.
+ */
+ cpu_setup_secondary_processors();
+#endif
+
(void)config_search(mainbus_scan, self, args);
}