summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Hellstrom <daniel@gaisler.com>2013-10-31 15:23:19 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-31 15:31:06 +0100
commite1b53274d01b5ffb6c8b2b1d55d361f628901724 (patch)
tree87bc20eb0f95e42081b811d30c1b136aa5d57a1c
parentFilesystem: Use ENOTTY for default ioctl() handler (diff)
downloadrtems-e1b53274d01b5ffb6c8b2b1d55d361f628901724.tar.bz2
LEON3_MP ISR: shared-IRQ setup overwrite SMP/MP ISR trap handler
Basically the shared-irq handler overwrite the SMP/MP traphandler previously initialized with set_vector(). That caused IPIs to enter BSP spurious handler.
-rw-r--r--c/src/lib/libbsp/sparc/shared/irq/irq-shared.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
index c84eeb3a6f..16119ff58c 100644
--- a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
+++ b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
@@ -32,6 +32,11 @@ void BSP_shared_interrupt_init(void)
int i;
for (i=0; i <= BSP_INTERRUPT_VECTOR_MAX_STD; i++) {
+#if defined(RTEMS_SMP) || defined(RTEMS_MULTIPROCESSING)
+ /* Don't install IRQ handler on IPI interrupt */
+ if (i == LEON3_MP_IRQ)
+ continue;
+#endif
vector = SPARC_ASYNCHRONOUS_TRAP(i) + 0x10;
rtems_interrupt_catch(BSP_ISR_handler, vector, &previous_isr);
}