diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2010-04-24 18:46:56 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2010-04-24 18:46:56 +0000 |
commit | 2cc5b2d5ea4e4207a448f7192d0a59cef474df9a (patch) | |
tree | 63f27fae1e6ea1ec68f30b73c2ea515abfdbd367 /sys/arch/aviion/dev | |
parent | 743a79e922aded7a34218322df7491c49049127d (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.c | 4 | ||||
-rw-r--r-- | sys/arch/aviion/dev/mainbus.c | 11 |
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); } |