[rtems commit] bsp/leon3: Fix bsp_interrupt_is_valid_vector()

Sebastian Huber sebh at rtems.org
Thu Jul 1 14:54:46 UTC 2021


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Jul  1 16:32:41 2021 +0200

bsp/leon3: Fix bsp_interrupt_is_valid_vector()

The fix to address CID 1399742 (NO_EFFECT) in commit
f8b6359415404540864f809cbcffb8c2200261e1 introduced a bug since
LEON3_IrqCtrl_EIrq == -1 in case no extended interrupts are supported by
the interrupt controller.  Fix this by checking for
LEON3_IrqCtrl_EIrq > 0.

In addition, interrupt number 0 is reserved and should not be used.

---

 bsps/sparc/leon3/include/bsp/irq.h | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/bsps/sparc/leon3/include/bsp/irq.h b/bsps/sparc/leon3/include/bsp/irq.h
index bc1b577..45d5a8d 100644
--- a/bsps/sparc/leon3/include/bsp/irq.h
+++ b/bsps/sparc/leon3/include/bsp/irq.h
@@ -34,11 +34,15 @@
  */
 static inline bool bsp_interrupt_is_valid_vector(rtems_vector_number vector)
 {
-  if (LEON3_IrqCtrl_EIrq != 0) {
+  if (vector == 0) {
+    return false;
+  }
+
+  if (LEON3_IrqCtrl_EIrq > 0) {
     return vector <= BSP_INTERRUPT_VECTOR_MAX_EXT;
-  } else {
-    return vector <= BSP_INTERRUPT_VECTOR_MAX_STD;
   }
+
+  return vector <= BSP_INTERRUPT_VECTOR_MAX_STD;
 }
 
 void bsp_interrupt_set_affinity(



More information about the vc mailing list