[rtems commit] leon, irq: single CPU SMP configuration does not need IPI ISR

Daniel Hellstrom danielh at rtems.org
Sun May 14 10:34:28 UTC 2017


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

Author:    Daniel Hellstrom <daniel at gaisler.com>
Date:      Tue Apr 25 09:10:03 2017 +0200

leon, irq: single CPU SMP configuration does not need IPI ISR

---

 c/src/lib/libbsp/sparc/shared/irq/irq-shared.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 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 174324f..f219e49 100644
--- a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
+++ b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
@@ -47,9 +47,14 @@ void BSP_shared_interrupt_init(void)
   for (i=0; i <= BSP_INTERRUPT_VECTOR_MAX_STD; i++) {
 #if defined(LEON3) && \
     (defined(RTEMS_SMP) || defined(RTEMS_MULTIPROCESSING))
-    /* Don't install IRQ handler on IPI interrupt */
-    if (i == LEON3_mp_irq)
-      continue;
+    /* Don't install IRQ handler on IPI interrupt. An SMP kernel with max one
+     * CPU does not use IPIs
+     */
+#ifdef RTEMS_SMP
+    if (rtems_configuration_get_maximum_processors() > 1)
+#endif
+      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