summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/include
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2009-02-16 23:03:34 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2009-02-16 23:03:34 +0000
commit87a4d2b5dacf5480bd6311efb989058635268939 (patch)
tree9e8b702429fa4342598d574ff9e0df811bea5337 /sys/arch/mvme88k/include
parentc2b751a79c81d1b576d343c8569ebbe7b62e4632 (diff)
More 88110 SMP work. Contains, horribly entangled:
- dma_cachectl() split into a ``local cpu only'' and ``all cpus'', and an ipi to broadcast ``local dma_cachectl'' is added. - cpu_info fields are rearranged, to have the 88100-specific information and the 88110-specific information overlap, and has many more 88110 ugly things. - more ipi handling in the 197-specific area. Since it is not possible to have the second processor receive any hardware interrupt (selection is done on a level basis via ISEL, and we definitely do not want the main cpu to lose interrupts), the best we can do is to inflict ourselves a soft interrupt for late ipi processing. It gets used for softclock and hardclock on the secondary processor, but since the soft interrupt dispatcher doesn't have an exception frame, we have to remember parts of it to build a fake clockframe from the soft ipi handler (ugly but works). This now lets GENERIC.MP run a few userland binaries before bugs trigger.
Diffstat (limited to 'sys/arch/mvme88k/include')
-rw-r--r--sys/arch/mvme88k/include/cpu.h3
-rw-r--r--sys/arch/mvme88k/include/mvme197.h3
2 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/mvme88k/include/cpu.h b/sys/arch/mvme88k/include/cpu.h
index 929fb8f6a35..c386d65e2de 100644
--- a/sys/arch/mvme88k/include/cpu.h
+++ b/sys/arch/mvme88k/include/cpu.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: cpu.h,v 1.40 2009/02/16 22:55:03 miod Exp $ */
+/* $OpenBSD: cpu.h,v 1.41 2009/02/16 23:03:33 miod Exp $ */
/*
* Copyright (c) 1996 Nivas Madhur
* Copyright (c) 1992, 1993
@@ -56,6 +56,7 @@ extern u_int (*md_raiseipl)(u_int);
extern void (*md_init_clocks)(void);
extern void (*md_send_ipi)(int, cpuid_t);
extern void (*md_delay)(int);
+extern void (*md_soft_ipi)(void);
struct intrhand {
SLIST_ENTRY(intrhand) ih_link;
diff --git a/sys/arch/mvme88k/include/mvme197.h b/sys/arch/mvme88k/include/mvme197.h
index 35d70652828..2f66bd88dc0 100644
--- a/sys/arch/mvme88k/include/mvme197.h
+++ b/sys/arch/mvme88k/include/mvme197.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: mvme197.h,v 1.9 2007/12/15 19:34:35 miod Exp $ */
+/* $OpenBSD: mvme197.h,v 1.10 2009/02/16 23:03:33 miod Exp $ */
/*
* Copyright (c) 1996 Nivas Madhur
* Copyright (c) 1999 Steve Murphree, Jr.
@@ -59,6 +59,7 @@
#define M197_IACK 0xfff00100 /* interrupt ACK base */
#ifdef _KERNEL
+void m197_broadcast_complex_ipi(int, u_int32_t, u_int32_t);
void m197_send_complex_ipi(int, cpuid_t, u_int32_t, u_int32_t);
void m197_send_ipi(int, cpuid_t);
#endif