[PATCH v2 09/12] bsps/irq: Use BSP_INTERRUPT_VECTOR_COUNT
Gedare Bloom
gedare at rtems.org
Wed Jun 23 16:07:08 UTC 2021
On Sat, Jun 19, 2021 at 8:05 AM Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
>
> Use BSP_INTERRUPT_VECTOR_COUNT instead of BSP_INTERRUPT_VECTOR_MAX.
>
> Update #3269.
> ---
> bsps/arm/atsam/start/bspstart.c | 2 +-
> bsps/arm/beagle/irq/irq.c | 2 +-
> bsps/arm/lpc176x/irq/irq.c | 2 +-
> bsps/arm/lpc24xx/irq/irq.c | 4 ++--
> bsps/arm/lpc32xx/include/bsp/irq.h | 2 +-
> bsps/arm/shared/irq/irq-armv7m.c | 2 +-
> bsps/arm/shared/start/start.S | 2 +-
> bsps/arm/tms570/irq/irq.c | 2 +-
> bsps/include/bsp/irq-generic.h | 8 ++++----
> bsps/m68k/genmcf548x/irq/irq.c | 4 ++--
> bsps/mips/shared/irq/irq.c | 2 +-
> bsps/powerpc/qoriq/irq/irq.c | 6 +++---
> bsps/shared/irq/irq-info.c | 2 +-
> bsps/shared/irq/irq-server.c | 2 +-
> testsuites/smptests/smpcapture02/init.c | 2 +-
> 15 files changed, 22 insertions(+), 22 deletions(-)
>
> diff --git a/bsps/arm/atsam/start/bspstart.c b/bsps/arm/atsam/start/bspstart.c
> index b463bab696..3f49779797 100644
> --- a/bsps/arm/atsam/start/bspstart.c
> +++ b/bsps/arm/atsam/start/bspstart.c
> @@ -21,7 +21,7 @@
> #include <chip.h>
>
> RTEMS_STATIC_ASSERT(
> - PERIPH_COUNT_IRQn <= BSP_INTERRUPT_VECTOR_MAX,
> + PERIPH_COUNT_IRQn <= BSP_INTERRUPT_VECTOR_COUNT,
> PERIPH_COUNT_IRQn
> );
>
> diff --git a/bsps/arm/beagle/irq/irq.c b/bsps/arm/beagle/irq/irq.c
> index 721703b87b..8e9294cae9 100644
> --- a/bsps/arm/beagle/irq/irq.c
> +++ b/bsps/arm/beagle/irq/irq.c
> @@ -133,7 +133,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
> }
>
> /* Mask all interrupts */
> - for(i = 0; i <= BSP_INTERRUPT_VECTOR_MAX; i++)
> + for(i = 0; i < BSP_INTERRUPT_VECTOR_COUNT; i++)
> bsp_interrupt_vector_disable(i);
>
> /* Install generic interrupt handler */
> diff --git a/bsps/arm/lpc176x/irq/irq.c b/bsps/arm/lpc176x/irq/irq.c
> index e05fd59e6c..a060401d0b 100644
> --- a/bsps/arm/lpc176x/irq/irq.c
> +++ b/bsps/arm/lpc176x/irq/irq.c
> @@ -38,7 +38,7 @@
> */
> static inline bool lpc176x_irq_is_valid( const rtems_vector_number vector )
> {
> - return vector <= BSP_INTERRUPT_VECTOR_MAX;
> + return vector < BSP_INTERRUPT_VECTOR_COUNT;
> }
>
> void lpc176x_irq_set_priority(
> diff --git a/bsps/arm/lpc24xx/irq/irq.c b/bsps/arm/lpc24xx/irq/irq.c
> index 2fed80efda..ed07805a9a 100644
> --- a/bsps/arm/lpc24xx/irq/irq.c
> +++ b/bsps/arm/lpc24xx/irq/irq.c
> @@ -31,7 +31,7 @@
>
> static inline bool lpc24xx_irq_is_valid(rtems_vector_number vector)
> {
> - return vector <= BSP_INTERRUPT_VECTOR_MAX;
> + return vector < BSP_INTERRUPT_VECTOR_COUNT;
> }
>
> void lpc24xx_irq_set_priority(rtems_vector_number vector, unsigned priority)
> @@ -91,7 +91,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
> /* Use IRQ category */
> VICIntSelect = 0;
>
> - for (i = 0; i <= BSP_INTERRUPT_VECTOR_MAX; ++i) {
> + for (i = 0; i < BSP_INTERRUPT_VECTOR_COUNT; ++i) {
> /* Use the vector address register to store the vector number */
> addr [i] = i;
>
> diff --git a/bsps/arm/lpc32xx/include/bsp/irq.h b/bsps/arm/lpc32xx/include/bsp/irq.h
> index d6f7e3144e..02fce3258a 100644
> --- a/bsps/arm/lpc32xx/include/bsp/irq.h
> +++ b/bsps/arm/lpc32xx/include/bsp/irq.h
> @@ -142,7 +142,7 @@ extern "C" {
> #define BSP_INTERRUPT_VECTOR_MAX LPC32XX_IRQ_SYSCLK
> #define BSP_INTERRUPT_VECTOR_COUNT (LPC32XX_IRQ_SYSCLK + 1)
>
> -#define LPC32XX_IRQ_COUNT (BSP_INTERRUPT_VECTOR_MAX + 1)
> +#define LPC32XX_IRQ_COUNT BSP_INTERRUPT_VECTOR_COUNT
>
> void lpc32xx_irq_set_priority(rtems_vector_number vector, unsigned priority);
>
> diff --git a/bsps/arm/shared/irq/irq-armv7m.c b/bsps/arm/shared/irq/irq-armv7m.c
> index 7c7c1ab114..2bf8c9df74 100644
> --- a/bsps/arm/shared/irq/irq-armv7m.c
> +++ b/bsps/arm/shared/irq/irq-armv7m.c
> @@ -67,7 +67,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
>
> _ARMV7M_SCB->icsr = ARMV7M_SCB_ICSR_PENDSVCLR | ARMV7M_SCB_ICSR_PENDSTCLR;
>
> - for (i = 0; i <= BSP_INTERRUPT_VECTOR_MAX; ++i) {
> + for (i = 0; i < BSP_INTERRUPT_VECTOR_COUNT; ++i) {
> _ARMV7M_NVIC_Clear_enable(i);
> _ARMV7M_NVIC_Clear_pending(i);
> _ARMV7M_NVIC_Set_priority(i, BSP_ARMV7M_IRQ_PRIORITY_DEFAULT);
> diff --git a/bsps/arm/shared/start/start.S b/bsps/arm/shared/start/start.S
> index bd623178ed..698495d32e 100644
> --- a/bsps/arm/shared/start/start.S
> +++ b/bsps/arm/shared/start/start.S
> @@ -529,7 +529,7 @@ bsp_start_vector_table_begin:
> .word _ARMV7M_Exception_default /* Reserved */
> .word _ARMV7M_Pendable_service_call /* PendSV */
> .word _ARMV7M_Clock_handler /* SysTick */
> - .rept BSP_INTERRUPT_VECTOR_MAX + 1
> + .rept BSP_INTERRUPT_VECTOR_COUNT
> .word _ARMV7M_NVIC_Interrupt_dispatch /* IRQ */
> .endr
>
> diff --git a/bsps/arm/tms570/irq/irq.c b/bsps/arm/tms570/irq/irq.c
> index 7129915c93..4abab8feb3 100644
> --- a/bsps/arm/tms570/irq/irq.c
> +++ b/bsps/arm/tms570/irq/irq.c
> @@ -28,7 +28,7 @@
> #include <bsp/irq.h>
> #include <rtems/score/armv4.h>
>
> -unsigned int priorityTable[BSP_INTERRUPT_VECTOR_MAX+1];
> +unsigned int priorityTable[BSP_INTERRUPT_VECTOR_COUNT];
>
> /**
> * @brief Set priority of the interrupt vector.
> diff --git a/bsps/include/bsp/irq-generic.h b/bsps/include/bsp/irq-generic.h
> index 749dc78988..ad64c457d6 100644
> --- a/bsps/include/bsp/irq-generic.h
> +++ b/bsps/include/bsp/irq-generic.h
> @@ -132,8 +132,8 @@ static inline rtems_vector_number bsp_interrupt_handler_index(
> * @brief Generic BSP Interrupt Support
> *
> * The BSP interrupt support manages a sequence of interrupt vector numbers
> - * ranging from zero to @ref BSP_INTERRUPT_VECTOR_MAX
> - * including the end points. It provides methods to
> + * greater than or equal to zero and less than @ref BSP_INTERRUPT_VECTOR_COUNT
> + * It provides methods to
> * @ref bsp_interrupt_handler_install() "install",
> * @ref bsp_interrupt_handler_remove() "remove" and
> * @ref bsp_interrupt_handler_dispatch() "dispatch" interrupt handlers for each
> @@ -144,7 +144,7 @@ static inline rtems_vector_number bsp_interrupt_handler_index(
> *
> * You have to configure the BSP interrupt support in the <bsp/irq.h> file
> * for each BSP. For a minimum configuration you have to provide
> - * @ref BSP_INTERRUPT_VECTOR_MAX.
> + * @ref BSP_INTERRUPT_VECTOR_COUNT.
> *
> * For boards with small memory requirements you can define
> * @ref BSP_INTERRUPT_USE_INDEX_TABLE. With an enabled index table the handler
> @@ -179,7 +179,7 @@ static inline rtems_vector_number bsp_interrupt_handler_index(
> */
> static inline bool bsp_interrupt_is_valid_vector(rtems_vector_number vector)
> {
> - return vector <= (rtems_vector_number) BSP_INTERRUPT_VECTOR_MAX;
> + return vector < (rtems_vector_number) BSP_INTERRUPT_VECTOR_COUNT;
> }
> #endif
>
> diff --git a/bsps/m68k/genmcf548x/irq/irq.c b/bsps/m68k/genmcf548x/irq/irq.c
> index d010865152..547e851cdd 100644
> --- a/bsps/m68k/genmcf548x/irq/irq.c
> +++ b/bsps/m68k/genmcf548x/irq/irq.c
> @@ -19,7 +19,7 @@
> static inline bool is_valid_vector(rtems_vector_number vector)
> {
> return 1 <= vector
> - && vector <= (rtems_vector_number) BSP_INTERRUPT_VECTOR_MAX;
> + && vector < (rtems_vector_number) BSP_INTERRUPT_VECTOR_COUNT;
> }
>
This one is weird. I don't know if there's an elegant solution though.
The "BSP_INTERRUPT_VECTOR_COUNT" isn't actually the number of vectors
in this BSP, since 0 is not a valid vector. However, I'm ok because
BSP_INTERRUPT_VECTOR_COUNT is an upper bound on the number of vectors.
Probably, this point needs to be documented carefully at least for
this particular BSP.
> void asm_default_interrupt(void);
> @@ -32,7 +32,7 @@ typedef struct {
> const char *info;
> } interrupt_control;
>
> -static interrupt_control interrupt_controls[BSP_INTERRUPT_VECTOR_MAX + 1];
> +static interrupt_control interrupt_controls[BSP_INTERRUPT_VECTOR_COUNT];
>
> static uint32_t vector_to_reg(rtems_vector_number vector)
> {
> diff --git a/bsps/mips/shared/irq/irq.c b/bsps/mips/shared/irq/irq.c
> index 1c2d3b8c5b..9fed3db489 100644
> --- a/bsps/mips/shared/irq/irq.c
> +++ b/bsps/mips/shared/irq/irq.c
> @@ -64,7 +64,7 @@ static const char *const cause_strings[32] = {
>
> static inline bool bsp_irq_is_valid(rtems_vector_number vector)
> {
> - return vector <= BSP_INTERRUPT_VECTOR_MAX;
> + return vector < BSP_INTERRUPT_VECTOR_COUNT;
> }
>
> void bsp_interrupt_vector_enable(rtems_vector_number vector)
> diff --git a/bsps/powerpc/qoriq/irq/irq.c b/bsps/powerpc/qoriq/irq/irq.c
> index 7f9680ea1c..ffbff25dc6 100644
> --- a/bsps/powerpc/qoriq/irq/irq.c
> +++ b/bsps/powerpc/qoriq/irq/irq.c
> @@ -128,7 +128,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
> {
> unsigned int i;
>
> - for (i = 0; i <= BSP_INTERRUPT_VECTOR_MAX; ++i) {
> + for (i = 0; i < BSP_INTERRUPT_VECTOR_COUNT; ++i) {
> uint32_t config;
> unsigned int priority;
> uint32_t destination;
> @@ -354,7 +354,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
>
> pic_reset();
>
> - for (i = 0; i <= BSP_INTERRUPT_VECTOR_MAX; ++i) {
> + for (i = 0; i < BSP_INTERRUPT_VECTOR_COUNT; ++i) {
> volatile qoriq_pic_src_cfg *src_cfg = get_src_cfg(i);
>
> src_cfg->vpr = VPR_MSK | VPR_P
> @@ -375,7 +375,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
>
> qoriq.pic.ctpr = 0;
>
> - for (i = 0; i <= BSP_INTERRUPT_VECTOR_MAX; ++i) {
> + for (i = 0; i < BSP_INTERRUPT_VECTOR_COUNT; ++i) {
> qoriq.pic.iack;
> qoriq.pic.eoi = 0;
> qoriq.pic.whoami;
> diff --git a/bsps/shared/irq/irq-info.c b/bsps/shared/irq/irq-info.c
> index 697976e525..a52465ef09 100644
> --- a/bsps/shared/irq/irq-info.c
> +++ b/bsps/shared/irq/irq-info.c
> @@ -87,7 +87,7 @@ void bsp_interrupt_report_with_plugin(
> "--------+----------------------------------+---------+------------+------------\n"
> );
>
> - for (v = 0; v <= BSP_INTERRUPT_VECTOR_MAX; ++v) {
> + for (v = 0; v < BSP_INTERRUPT_VECTOR_COUNT; ++v) {
> e.vector = v;
> rtems_interrupt_handler_iterate(
> v,
> diff --git a/bsps/shared/irq/irq-server.c b/bsps/shared/irq/irq-server.c
> index fa2153fcb0..8b9d82eb29 100644
> --- a/bsps/shared/irq/irq-server.c
> +++ b/bsps/shared/irq/irq-server.c
> @@ -42,7 +42,7 @@
>
> #include <bsp/irq-generic.h>
>
> -#define BSP_INTERRUPT_SERVER_MANAGEMENT_VECTOR (BSP_INTERRUPT_VECTOR_MAX + 1)
> +#define BSP_INTERRUPT_SERVER_MANAGEMENT_VECTOR BSP_INTERRUPT_VECTOR_COUNT
>
> static rtems_interrupt_server_control bsp_interrupt_server_default;
>
> diff --git a/testsuites/smptests/smpcapture02/init.c b/testsuites/smptests/smpcapture02/init.c
> index 329fd344e6..4b11e6bbd7 100644
> --- a/testsuites/smptests/smpcapture02/init.c
> +++ b/testsuites/smptests/smpcapture02/init.c
> @@ -316,7 +316,7 @@ static void Init(rtems_task_argument arg)
> test(cpu_count);
>
> /* Try to find the clock interrupt handler */
> - for ( vec = 0; vec <= BSP_INTERRUPT_VECTOR_MAX; vec++ ) {
> + for ( vec = 0; vec < BSP_INTERRUPT_VECTOR_COUNT; vec++ ) {
> rtems_interrupt_handler_iterate(vec, locate_clock_interrupt_handler, &cih);
> if ( cih.found )
> break;
> --
> 2.26.2
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
More information about the devel
mailing list