This BSP uses a customized implementation of the interrupt extension API. It was the only BSP which defined BSP_INTERRUPT_VECTOR_MIN to a value other than zero. Define it to zero and use a custom is_valid_vector() function instead.
Update #3269. --- bsps/m68k/genmcf548x/include/bsp/irq.h | 2 +- bsps/m68k/genmcf548x/irq/irq.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/bsps/m68k/genmcf548x/include/bsp/irq.h b/bsps/m68k/genmcf548x/include/bsp/irq.h index 0a5a4cd6d5..c9809e3cbf 100644 --- a/bsps/m68k/genmcf548x/include/bsp/irq.h +++ b/bsps/m68k/genmcf548x/include/bsp/irq.h @@ -89,7 +89,7 @@ #define MCF548X_IRQ_GPT1 61 #define MCF548X_IRQ_GPT0 62 -#define BSP_INTERRUPT_VECTOR_MIN 1 +#define BSP_INTERRUPT_VECTOR_MIN 0 #define BSP_INTERRUPT_VECTOR_MAX 63 diff --git a/bsps/m68k/genmcf548x/irq/irq.c b/bsps/m68k/genmcf548x/irq/irq.c index f02231b67c..d010865152 100644 --- a/bsps/m68k/genmcf548x/irq/irq.c +++ b/bsps/m68k/genmcf548x/irq/irq.c @@ -16,6 +16,12 @@ #include <mcf548x/mcf548x.h> +static inline bool is_valid_vector(rtems_vector_number vector) +{ + return 1 <= vector + && vector <= (rtems_vector_number) BSP_INTERRUPT_VECTOR_MAX; +} + void asm_default_interrupt(void); typedef void (*void_func)(void); @@ -65,7 +71,7 @@ void bsp_interrupt_vector_enable(rtems_vector_number vector) uint32_t bit = vector_to_bit(vector); rtems_interrupt_level level; - bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); + bsp_interrupt_assert(is_valid_vector(vector)); rtems_interrupt_disable(level); *imr &= ~bit; @@ -78,7 +84,7 @@ void bsp_interrupt_vector_disable(rtems_vector_number vector) uint32_t bit = vector_to_bit(vector); rtems_interrupt_level level; - bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); + bsp_interrupt_assert(is_valid_vector(vector)); rtems_interrupt_disable(level); *imr |= bit; @@ -134,7 +140,7 @@ rtems_status_code rtems_interrupt_handler_install( { rtems_status_code sc = RTEMS_SUCCESSFUL; - if (bsp_interrupt_is_valid_vector(vector)) { + if (is_valid_vector(vector)) { rtems_interrupt_level level; rtems_interrupt_disable(level); @@ -180,7 +186,7 @@ rtems_status_code rtems_interrupt_handler_remove( { rtems_status_code sc = RTEMS_SUCCESSFUL; - if (bsp_interrupt_is_valid_vector(vector)) { + if (is_valid_vector(vector)) { rtems_interrupt_level level; interrupt_control *ic = &interrupt_controls[vector]; @@ -215,7 +221,7 @@ rtems_status_code rtems_interrupt_handler_iterate( { rtems_status_code sc = RTEMS_SUCCESSFUL; - if (bsp_interrupt_is_valid_vector(vector)) { + if (is_valid_vector(vector)) { if (is_occupied_by_us(vector)) { const interrupt_control *ic = &interrupt_controls[vector]; -- 2.26.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel