[rtems commit] LEON3_MP ISR: shared-IRQ setup overwrite SMP/ MP ISR trap handler

Sebastian Huber sebh at rtems.org
Thu Oct 31 14:24:37 UTC 2013


Module:    rtems
Branch:    master
Commit:    e1b53274d01b5ffb6c8b2b1d55d361f628901724
Changeset: http://git.rtems.org/rtems/commit/?id=e1b53274d01b5ffb6c8b2b1d55d361f628901724

Author:    Daniel Hellstrom <daniel at gaisler.com>
Date:      Thu Oct 31 15:23:19 2013 +0100

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 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);
        }




More information about the vc mailing list