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 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 c84eeb3..16119ff 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); } -- 1.7.0.4 _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel