bsps/irq: Add BSP_INTERRUPT_VECTOR_COUNT

Assert BSP_INTERRUPT_VECTOR_MAX + 1 == BSP_INTERRUPT_VECTOR_COUNT.

After building all BSPs with this patch, BSP_INTERRUPT_VECTOR_MAX can be
removed and replaced by BSP_INTERRUPT_VECTOR_COUNT.  The
BSP_INTERRUPT_VECTOR_COUNT allows a default implementation which supports no
interrupt vector at all.  Using COUNT instead of MAX may avoid some
interpretation issues, for example is the maximum value a valid vector number
or not.

Update #3269.
This commit is contained in:
Sebastian Huber
2021-06-24 11:35:49 +02:00
parent 900a84c5d1
commit cd5573c09d
55 changed files with 67 additions and 0 deletions
+1
View File
@@ -49,6 +49,7 @@ extern "C" {
#endif /* __cplusplus */
#define BSP_INTERRUPT_VECTOR_MAX 1023
#define BSP_INTERRUPT_VECTOR_COUNT 1024
/* Interrupts vectors */
#define BSP_TIMER_VIRT_PPI 27
+1
View File
@@ -49,6 +49,7 @@ extern "C" {
#endif /* __cplusplus */
#define BSP_INTERRUPT_VECTOR_MAX 1023
#define BSP_INTERRUPT_VECTOR_COUNT 1024
/* Interrupts vectors */
#define BSP_TIMER_VIRT_PPI 27
@@ -49,6 +49,7 @@ extern "C" {
#endif /* __cplusplus */
#define BSP_INTERRUPT_VECTOR_MAX 1023
#define BSP_INTERRUPT_VECTOR_COUNT 1024
/* Interrupts vectors */
#define BSP_TIMER_VIRT_PPI 27
@@ -48,6 +48,8 @@ extern "C" {
/* Use interrupt IDs as defined in alt_interrupt_common.h */
#define BSP_INTERRUPT_VECTOR_MAX ALT_INT_INTERRUPT_RAM_ECC_UNCORRECTED_IRQ
#define BSP_INTERRUPT_VECTOR_COUNT \
(ALT_INT_INTERRUPT_RAM_ECC_UNCORRECTED_IRQ + 1)
/** @} */
+1
View File
@@ -24,5 +24,6 @@
#endif
#define BSP_INTERRUPT_VECTOR_MAX 64
#define BSP_INTERRUPT_VECTOR_COUNT 65
#endif /* LIBBSP_ARM_ATSAM_ESV_70_IRQ_H */
+1
View File
@@ -16,6 +16,7 @@
#include <rtems/irq-extension.h>
#define BSP_INTERRUPT_VECTOR_MAX 127
#define BSP_INTERRUPT_VECTOR_COUNT 128
#endif /* ASM */
+1
View File
@@ -89,5 +89,6 @@
#define BSP_MAX_INT 64
#define BSP_INTERRUPT_VECTOR_MAX (BSP_MAX_INT - 1)
#define BSP_INTERRUPT_VECTOR_COUNT BSP_MAX_INT
#endif /* __IRQ_H__ */
+1
View File
@@ -73,5 +73,6 @@
#define AT91RM9200_MAX_INT 32
#define BSP_INTERRUPT_VECTOR_MAX (AT91RM9200_MAX_INT - 1)
#define BSP_INTERRUPT_VECTOR_COUNT AT91RM9200_MAX_INT
#endif /* __IRQ_H__ */
+1
View File
@@ -84,6 +84,7 @@
/** @} */
#define BSP_INTERRUPT_VECTOR_MAX (BSP_MAX_INT - 1)
#define BSP_INTERRUPT_VECTOR_COUNT BSP_MAX_INT
/** @} */
+2
View File
@@ -41,5 +41,7 @@
#include <bspopts.h>
#define BSP_INTERRUPT_VECTOR_MAX (32 + BSP_ARM_SHARED_PERIPHERAL_INTERRUPT_COUNT)
#define BSP_INTERRUPT_VECTOR_COUNT \
(32 + BSP_ARM_SHARED_PERIPHERAL_INTERRUPT_COUNT + 1)
#endif /* LIBBSP_ARM_FVP_IRQ_H */
+1
View File
@@ -21,6 +21,7 @@
#include <pxa255.h>
#define BSP_INTERRUPT_VECTOR_MAX (PRIMARY_IRQS - 1)
#define BSP_INTERRUPT_VECTOR_COUNT PRIMARY_IRQS
#endif /* __asm__ */
+1
View File
@@ -27,6 +27,7 @@ extern "C" {
#endif /* __cplusplus */
#define BSP_INTERRUPT_VECTOR_MAX 159
#define BSP_INTERRUPT_VECTOR_COUNT 160
#define BSP_INTERRUPT_VECTOR_INVALID (UINT32_MAX)
#ifdef __cplusplus
+1
View File
@@ -44,6 +44,7 @@ extern "C" {
#endif /* __cplusplus */
#define BSP_INTERRUPT_VECTOR_MAX 159
#define BSP_INTERRUPT_VECTOR_COUNT 160
#define BSP_INTERRUPT_VECTOR_INVALID (UINT32_MAX)
#ifdef __cplusplus
+1
View File
@@ -102,5 +102,6 @@
/* NOTE: for lm3s6965 - 43 */
#define BSP_INTERRUPT_VECTOR_MAX 47
#define BSP_INTERRUPT_VECTOR_COUNT 48
#endif /* LIBBSP_ARM_LM3S69XX_IRQ_H */
+1
View File
@@ -69,6 +69,7 @@
#define LPC176X_IRQ_EEPROM 40U
#define BSP_INTERRUPT_VECTOR_MAX 40
#define BSP_INTERRUPT_VECTOR_COUNT 41
#define LPC176X_IRQ_PRIORITY_VALUE_MIN 0U
+2
View File
@@ -70,6 +70,7 @@
#define LPC24XX_IRQ_I2S 31
#define BSP_INTERRUPT_VECTOR_MAX 31
#define BSP_INTERRUPT_VECTOR_COUNT 32
#else
#define LPC24XX_IRQ_WDT 0
#define LPC24XX_IRQ_TIMER_0 1
@@ -113,6 +114,7 @@
#define LPC24XX_IRQ_EEPROM 40
#define BSP_INTERRUPT_VECTOR_MAX 40
#define BSP_INTERRUPT_VECTOR_COUNT 41
#endif
#define LPC24XX_IRQ_PRIORITY_VALUE_MIN 0
+1
View File
@@ -140,6 +140,7 @@ extern "C" {
#define LPC32XX_IRQ_PRIORITY_LOWEST LPC32XX_IRQ_PRIORITY_VALUE_MAX
#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)
+2
View File
@@ -34,6 +34,7 @@
*/
#define BCM2835_INTC_TOTAL_IRQ 64 + 8
#define BCM2835_INTC_TOTAL_IRQ (64 + 8)
#define BCM2835_IRQ_SET1_MIN 0
#define BCM2835_IRQ_SET2_MIN 32
@@ -70,6 +71,7 @@
#define BCM2835_IRQ_ID_ILL_ACCESS_0 71
#define BSP_INTERRUPT_VECTOR_MAX (BCM2835_INTC_TOTAL_IRQ - 1)
#define BSP_INTERRUPT_VECTOR_COUNT BCM2835_INTC_TOTAL_IRQ
#define BSP_INTERRUPT_VECTOR_INVALID (UINT32_MAX)
#define BSP_IRQ_COUNT (BCM2835_INTC_TOTAL_IRQ)
@@ -91,6 +91,7 @@ extern "C" {
#define RVPBXA9_IRQ_P_NINT_7 89
#define BSP_INTERRUPT_VECTOR_MAX 89
#define BSP_INTERRUPT_VECTOR_COUNT 90
#ifdef __cplusplus
}
+1
View File
@@ -54,6 +54,7 @@
#define BSP_MAX_INT 28
#define BSP_INTERRUPT_VECTOR_MAX (BSP_MAX_INT - 1)
#define BSP_INTERRUPT_VECTOR_COUNT BSP_MAX_INT
#define UNDEFINED_INSTRUCTION_VECTOR_ADDR (*(u_long *)0x00000004L)
#define SOFTWARE_INTERRUPT_VECTOR_ADDR (*(u_long *)0x00000008L)
+1
View File
@@ -91,6 +91,7 @@
#endif
#define BSP_INTERRUPT_VECTOR_MAX (BSP_MAX_INT - 1)
#define BSP_INTERRUPT_VECTOR_COUNT BSP_MAX_INT
#endif /* _IRQ_H_ */
/* end of include file */
+1
View File
@@ -134,6 +134,7 @@ extern "C" {
#define STM32F4_IRQ_PRIORITY_LOWEST STM32F4_IRQ_PRIORITY_VALUE_MAX
#define BSP_INTERRUPT_VECTOR_MAX 81
#define BSP_INTERRUPT_VECTOR_COUNT 82
/** @} */
+1
View File
@@ -37,5 +37,6 @@
#endif /* ASM */
#define BSP_INTERRUPT_VECTOR_MAX 239
#define BSP_INTERRUPT_VECTOR_COUNT 240
#endif /* LIBBSP_ARM_STM32H7_IRQ_H */
+1
View File
@@ -113,6 +113,7 @@
#define TMS570_IRQ_HWAG1_INT_REQ_L 88
#define TMS570_IRQ_HWAG2_INT_REQ_L 89
#define BSP_INTERRUPT_VECTOR_MAX 94
#define BSP_INTERRUPT_VECTOR_COUNT 95
#define TMS570_IRQ_PRIORITY_VALUE_MIN 0U
#define TMS570_IRQ_PRIORITY_VALUE_MAX 0U
+1
View File
@@ -41,6 +41,7 @@ extern "C" {
#endif /* __cplusplus */
#define BSP_INTERRUPT_VECTOR_MAX 1023
#define BSP_INTERRUPT_VECTOR_COUNT 1024
/* Xen guest interrupts */
#define GUEST_TIMER_VIRT_PPI 27
+1
View File
@@ -115,6 +115,7 @@ extern "C" {
#define ZYNQ_IRQ_PARITY 92
#define BSP_INTERRUPT_VECTOR_MAX 92
#define BSP_INTERRUPT_VECTOR_COUNT 93
/** @} */
+1
View File
@@ -68,6 +68,7 @@ extern "C" {
#define ZYNQMP_IRQ_UART_1 54
#define BSP_INTERRUPT_VECTOR_MAX 187
#define BSP_INTERRUPT_VECTOR_COUNT 188
/** @} */
+1
View File
@@ -80,6 +80,7 @@ extern "C" {
#define BSP_SMP_IPI 16 /* not part of the ATPIC */
#define BSP_INTERRUPT_VECTOR_MAX BSP_IRQ_VECTOR_MAX_OFFSET
#define BSP_INTERRUPT_VECTOR_COUNT BSP_IRQ_VECTOR_NUMBER
/** @brief
* Type definition for RTEMS managed interrupts
+1
View File
@@ -48,6 +48,7 @@ extern "C" {
* @brief Default maximum interrupt vector.
*/
#define BSP_INTERRUPT_VECTOR_MAX 0
#define BSP_INTERRUPT_VECTOR_COUNT 1
/** @} */
+8
View File
@@ -62,6 +62,14 @@ extern "C" {
#error "BSP_INTERRUPT_VECTOR_MAX shall be defined"
#endif
#if !defined(BSP_INTERRUPT_VECTOR_COUNT)
#error "BSP_INTERRUPT_VECTOR_COUNT shall be defined"
#endif
#if BSP_INTERRUPT_VECTOR_MAX + 1 != BSP_INTERRUPT_VECTOR_COUNT
#error "BSP_INTERRUPT_VECTOR_COUNT is not equal to BSP_INTERRUPT_VECTOR_MAX + 1"
#endif
#if defined(BSP_INTERRUPT_USE_INDEX_TABLE) && !defined(BSP_INTERRUPT_HANDLER_TABLE_SIZE)
#error "if you define BSP_INTERRUPT_USE_INDEX_TABLE, you have to define BSP_INTERRUPT_HANDLER_TABLE_SIZE etc. as well"
#endif
+1
View File
@@ -36,6 +36,7 @@
* @brief Maximum vector number.
*/
#define BSP_INTERRUPT_VECTOR_MAX 31
#define BSP_INTERRUPT_VECTOR_COUNT 32
/** @} */
+1
View File
@@ -90,6 +90,7 @@
#define MCF548X_IRQ_GPT0 62
#define BSP_INTERRUPT_VECTOR_MAX 63
#define BSP_INTERRUPT_VECTOR_COUNT 64
#define BSP_INTERRUPT_CUSTOM_VALID_VECTOR
+1
View File
@@ -116,6 +116,7 @@
#define AU1X00_MAXIMUM_VECTORS (MIPS_INTERRUPT_BASE + 72)
#define BSP_INTERRUPT_VECTOR_MAX AU1X00_MAXIMUM_VECTORS
#define BSP_INTERRUPT_VECTOR_COUNT (AU1X00_MAXIMUM_VECTORS + 1)
/** @} */
+1
View File
@@ -33,6 +33,7 @@
#define RM5231_MAXIMUM_VECTORS (MIPS_INTERRUPT_BASE+8)
#define BSP_INTERRUPT_VECTOR_MAX RM5231_MAXIMUM_VECTORS
#define BSP_INTERRUPT_VECTOR_COUNT (RM5231_MAXIMUM_VECTORS + 1)
/** @} */
+1
View File
@@ -60,6 +60,7 @@
#define TX3904_MAXIMUM_VECTORS MIPS_INTERRUPT_BASE+19
#define BSP_INTERRUPT_VECTOR_MAX TX3904_MAXIMUM_VECTORS
#define BSP_INTERRUPT_VECTOR_COUNT (TX3904_MAXIMUM_VECTORS + 1)
/** @} */
+1
View File
@@ -80,6 +80,7 @@
#
#define BSP_INTERRUPT_VECTOR_MAX MALTA_PCI_ADP_LAST
#define BSP_INTERRUPT_VECTOR_COUNT (MALTA_PCI_ADP_LAST + 1)
/*
* Redefine interrupts with more descriptive names.
+1
View File
@@ -73,6 +73,7 @@
#define TX4925_MAXIMUM_VECTORS MIPS_INTERRUPT_BASE+34
#define BSP_INTERRUPT_VECTOR_MAX TX4925_MAXIMUM_VECTORS
#define BSP_INTERRUPT_VECTOR_COUNT (TX4925_MAXIMUM_VECTORS + 1)
/** @} */
+1
View File
@@ -73,6 +73,7 @@
#define TX4938_MAXIMUM_VECTORS MIPS_INTERRUPT_BASE+34
#define BSP_INTERRUPT_VECTOR_MAX TX4938_MAXIMUM_VECTORS
#define BSP_INTERRUPT_VECTOR_COUNT (TX4938_MAXIMUM_VECTORS + 1)
/** @} */
+1
View File
@@ -204,6 +204,7 @@ typedef enum {
#define BSP_PERIODIC_TIMER BSP_SIU_IRQ_TMR6
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
#define BSP_INTERRUPT_VECTOR_COUNT (BSP_MAX_OFFSET + 1)
#endif
+1
View File
@@ -163,6 +163,7 @@ extern "C" {
} rtems_irq_symbolic_name;
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
#define BSP_INTERRUPT_VECTOR_COUNT (BSP_MAX_OFFSET + 1)
rtems_status_code mpc83xx_ipic_set_mask( rtems_vector_number vector, rtems_vector_number mask_vector, bool mask);
@@ -116,6 +116,7 @@ extern "C" {
#define BSP_LOWEST_OFFSET (BSP_ISA_IRQ_LOWEST_OFFSET)
#define BSP_MAX_OFFSET (BSP_MISC_IRQ_MAX_OFFSET)
#define BSP_INTERRUPT_VECTOR_MAX (BSP_MAX_OFFSET)
#define BSP_INTERRUPT_VECTOR_COUNT (BSP_MAX_OFFSET + 1)
/*
* Some ISA IRQ symbolic name definition
*/
@@ -478,6 +478,7 @@ rtems_status_code mpc55xx_intc_clear_software_irq(rtems_vector_number vector);
*/
#define BSP_INTERRUPT_VECTOR_MAX MPC55XX_IRQ_MAX
#define BSP_INTERRUPT_VECTOR_COUNT (MPC55XX_IRQ_MAX + 1)
#ifdef BSP_INTERRUPT_HANDLER_TABLE_SIZE
#define BSP_INTERRUPT_USE_INDEX_TABLE
@@ -142,6 +142,7 @@ extern volatile unsigned int ppc_cached_irq_mask;
#define BSP_PERIODIC_TIMER (BSP_DECREMENTER)
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
#define BSP_INTERRUPT_VECTOR_COUNT (BSP_MAX_OFFSET + 1)
#define CPM_INTERRUPT
+1
View File
@@ -58,6 +58,7 @@
#include <bsp/irq_supp.h>
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
#define BSP_INTERRUPT_VECTOR_COUNT BSP_IRQ_NUMBER
#ifdef __cplusplus
extern "C" {
+1
View File
@@ -57,6 +57,7 @@
#define BSP_DECREMENTER (BSP_PROCESSOR_IRQ_LOWEST_OFFSET)
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
#define BSP_INTERRUPT_VECTOR_COUNT BSP_IRQ_NUMBER
/* #include <bsp/irq_supp.h> */
+2
View File
@@ -35,6 +35,7 @@ extern "C" {
#ifdef QORIQ_IS_HYPERVISOR_GUEST
#define BSP_INTERRUPT_VECTOR_MAX 1023
#define BSP_INTERRUPT_VECTOR_COUNT 1024
#else /* !QORIQ_IS_HYPERVISOR_GUEST */
@@ -351,6 +352,7 @@ extern "C" {
#define QORIQ_IRQ_GT_B_3 (QORIQ_IRQ_GT_BASE + 7)
#define BSP_INTERRUPT_VECTOR_MAX QORIQ_IRQ_GT_B_3
#define BSP_INTERRUPT_VECTOR_COUNT (QORIQ_IRQ_GT_B_3 + 1)
/** @} */
+1
View File
@@ -25,6 +25,7 @@ extern "C" {
#endif /* __cplusplus */
#define BSP_INTERRUPT_VECTOR_MAX 0
#define BSP_INTERRUPT_VECTOR_COUNT 1
RTEMS_INLINE_ROUTINE void bsp_interrupt_set_affinity(
rtems_vector_number vector,
+1
View File
@@ -147,6 +147,7 @@ extern "C" {
#define BSP_FAST_ETHERNET_CTRL BSP_SIU_INT_IRQ_3
#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
#define BSP_INTERRUPT_VECTOR_COUNT (BSP_MAX_OFFSET + 1)
extern int BSP_irq_enabled_at_cpm(const rtems_irq_number irqLine);
+1
View File
@@ -62,6 +62,7 @@
|| BSP_IS_OPBINTC_IRQ(irqnum))
#define BSP_INTERRUPT_VECTOR_MAX BSP_PROCESSOR_IRQ_MAX_OFFSET
#define BSP_INTERRUPT_VECTOR_COUNT (BSP_PROCESSOR_IRQ_MAX_OFFSET + 1)
#ifndef ASM
#ifdef __cplusplus
+1
View File
@@ -55,6 +55,7 @@
#define RISCV_INTERRUPT_VECTOR_EXTERNAL_TO_INDEX(x) ((x) - 2)
#define BSP_INTERRUPT_VECTOR_MAX RISCV_INTERRUPT_VECTOR_EXTERNAL(RISCV_MAXIMUM_EXTERNAL_INTERRUPTS - 1)
#define BSP_INTERRUPT_VECTOR_COUNT RISCV_INTERRUPT_VECTOR_EXTERNAL(RISCV_MAXIMUM_EXTERNAL_INTERRUPTS)
void bsp_interrupt_set_affinity(
rtems_vector_number vector,

Some files were not shown because too many files have changed in this diff Show More