summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/include
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2007-05-14 17:00:41 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2007-05-14 17:00:41 +0000
commit1c060e9bbf429ecd1c20e7d6a7ccad995a9dd8cc (patch)
treedf2be620149ca7c20b41da842a2c51b9eb13abf5 /sys/arch/mvme88k/include
parent324e84af407cac6fe6c7ee0d3fed906b9c4e3128 (diff)
Work in progress IPI mechanism, currently only implemented on MVME188, to
send clock ticks to secondary processors.
Diffstat (limited to 'sys/arch/mvme88k/include')
-rw-r--r--sys/arch/mvme88k/include/cpu.h3
-rw-r--r--sys/arch/mvme88k/include/mvme188.h14
2 files changed, 13 insertions, 4 deletions
diff --git a/sys/arch/mvme88k/include/cpu.h b/sys/arch/mvme88k/include/cpu.h
index 0ae4bdd0425..72dc6bb1a64 100644
--- a/sys/arch/mvme88k/include/cpu.h
+++ b/sys/arch/mvme88k/include/cpu.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: cpu.h,v 1.36 2007/03/22 18:52:39 miod Exp $ */
+/* $OpenBSD: cpu.h,v 1.37 2007/05/14 17:00:40 miod Exp $ */
/*
* Copyright (c) 1996 Nivas Madhur
* Copyright (c) 1992, 1993
@@ -52,6 +52,7 @@ extern u_int (*md_getipl)(void);
extern u_int (*md_setipl)(u_int);
extern u_int (*md_raiseipl)(u_int);
extern void (*md_init_clocks)(void);
+extern void (*md_send_ipi)(int, cpuid_t);
struct intrhand {
SLIST_ENTRY(intrhand) ih_link;
diff --git a/sys/arch/mvme88k/include/mvme188.h b/sys/arch/mvme88k/include/mvme188.h
index 3f06ba62e3e..aa13449cf5f 100644
--- a/sys/arch/mvme88k/include/mvme188.h
+++ b/sys/arch/mvme88k/include/mvme188.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: mvme188.h,v 1.28 2006/11/18 22:53:11 miod Exp $ */
+/* $OpenBSD: mvme188.h,v 1.29 2007/05/14 17:00:40 miod Exp $ */
/*
* Copyright (c) 1999 Steve Murphree, Jr.
* All rights reserved.
@@ -149,8 +149,9 @@
/* hardware irq bits */
#define HW_FAILURE_MASK (IRQ_ABORT | IRQ_ACF | IRQ_ARBTO | IRQ_SF)
/* software irq bits */
-#define SOFT_INTERRUPT_MASK (IRQ_SWI7 | IRQ_SWI6 | IRQ_SWI5 | IRQ_SWI4 | \
- IRQ_SWI3 | IRQ_SWI2 | IRQ_SWI1 | IRQ_SWI0)
+#define SOFT_INTERRUPT_MASK (IRQ_SWI7 | IRQ_SWI6 | IRQ_SWI5 | IRQ_SWI4)
+/* IPI bits (see below) */
+#define IPI_MASK (IRQ_SWI3 | IRQ_SWI2 | IRQ_SWI1 | IRQ_SWI0)
/* VME irq bits */
#define VME_INTERRUPT_MASK (IRQ_VME7 | IRQ_VME6 | IRQ_VME5 | IRQ_VME4 | \
IRQ_VME3 | IRQ_VME2 | IRQ_VME1)
@@ -186,6 +187,13 @@
(*(volatile u_int *)MVME188_IST & *int_mask_reg[cpu])
/*
+ * Software interrupts 0 to 3 are used to deliver IPIs to cpu0-3.
+ * We rely on the fact that the control bits for these interrupts are
+ * the same in the interrupt registers and the set/clear SWI registers.
+ */
+#define IPI_BIT(cpuid) (1 << (cpuid))
+
+/*
* ISTATE and CLRINT register bits
*/