From e1b53274d01b5ffb6c8b2b1d55d361f628901724 Mon Sep 17 00:00:00 2001 From: Daniel Hellstrom Date: Thu, 31 Oct 2013 15:23:19 +0100 Subject: 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. --- c/src/lib/libbsp/sparc/shared/irq/irq-shared.c | 5 +++++ 1 file changed, 5 insertions(+) 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); } -- cgit v1.2.3