RTEMS 6.1-rc4
Loading...
Searching...
No Matches
Modules | Files | Macros | Functions
Interrupt Manager

This group contains the Interrupt Manager implementation. More...

Modules

 ARM Generic Interrupt Controller (GIC) Support
 This group contains the Interrupt Manager implementation parts specific to the ARM Generic Interrupt Controller.
 
 Interrupt Support
 Intel Cyclone V Interrupt Support.
 
 Interrupt Support
 

Files

file  irq.c
 Interrupt support.
 
file  irq.h
 LPC176X interrupt definitions.
 
file  irq.c
 LPC176X interrupt support.
 
file  irq.h
 LPC24XX interrupt definitions.
 
file  irq-dispatch.c
 LPC24XX interrupt support.
 
file  irq.c
 LPC24XX interrupt support.
 
file  irq-generic.h
 This header file provides interfaces of the Interrupt Manager implementation.
 
file  irq-info.h
 This header file provides interfaces of the generic interrupt controller support for the RTEMS Shell.
 
file  irq.h
 BSP interrupt support for LM32.
 
file  irq.h
 interrupt definitions.
 
file  irq.h
 interrupt definitions.
 
file  irq.h
 jmr3904 interrupt definitions.
 
file  irq.h
 Malta Interrupt Definitions.
 
file  irq.h
 interrupt definitions.
 
file  irq.h
 interrupt definitions.
 
file  irq.c
 Interrupt support.
 
file  irq-affinity.c
 This source file contains the implementation of rtems_interrupt_get_affinity() and rtems_interrupt_set_affinity().
 
file  irq-default-handler.c
 This source file contains the default implementation of bsp_interrupt_handler_default().
 
file  irq-default.c
 This source file contains the default implementation of bsp_interrupt_vector_enable(), bsp_interrupt_vector_disable(), and bsp_interrupt_facility_initialize().
 
file  irq-enable-disable.c
 This source file contains the implementation of rtems_interrupt_get_attributes(), rtems_interrupt_vector_is_enabled(), rtems_interrupt_vector_enable() and rtems_interrupt_vector_disable().
 
file  irq-entry-remove.c
 This source file contains the implementation of rtems_interrupt_entry_remove() and bsp_interrupt_entry_remove().
 
file  irq-generic.c
 This source file contains the generic interrupt controller support implementation.
 
file  irq-handler-install.c
 This source file contains the rtems_interrupt_handler_install() implementation.
 
file  irq-handler-iterate.c
 This source file contains the implementation of rtems_interrupt_handler_iterate().
 
file  irq-handler-remove.c
 This source file contains the implementation of rtems_interrupt_handler_remove().
 
file  irq-info.c
 This source file contains the implementation of bsp_interrupt_report() and bsp_interrupt_report_with_plugin().
 
file  irq-legacy.c
 This source file contains the legacy interrupt controller support implementation.
 
file  irq-lock.c
 This source file contains the implementation of bsp_interrupt_lock() and bsp_interrupt_unlock().
 
file  irq-priority.c
 This source file contains the implementation of rtems_interrupt_get_priority() and rtems_interrupt_set_priority().
 
file  irq-raise-clear.c
 This source file contains the implementation of rtems_interrupt_clear().
 
file  irq-record.c
 This source file contains the implementation of the interrupt event recording support.
 
file  irq-server.c
 This source file contains the interrupt server implementation.
 
file  irq-shell.c
 This source file contains the definition of bsp_interrupt_shell_command.
 

Macros

#define LPC176X_IRQ_WDT   0U
 
#define LPC176X_IRQ_TIMER_0   1U
 
#define LPC176X_IRQ_TIMER_1   2U
 
#define LPC176X_IRQ_TIMER_2   3U
 
#define LPC176X_IRQ_TIMER_3   4U
 
#define LPC176X_IRQ_UART_0   5U
 
#define LPC176X_IRQ_UART_1   6U
 
#define LPC176X_IRQ_UART_2   7U
 
#define LPC176X_IRQ_UART_3   8U
 
#define LPC176X_IRQ_PWM_1   9U
 
#define LPC176X_IRQ_PLL   16U
 
#define LPC176X_IRQ_RTC   17U
 
#define LPC176X_IRQ_EINT_0   18U
 
#define LPC176X_IRQ_EINT_1   19U
 
#define LPC176X_IRQ_EINT_2   20U
 
#define LPC176X_IRQ_EINT_3   21U
 
#define LPC176X_IRQ_ADC_0   22U
 
#define LPC176X_IRQ_BOD   23U
 
#define LPC176X_IRQ_USB   24U
 
#define LPC176X_IRQ_CAN   25U
 
#define LPC176X_IRQ_DMA   26U
 
#define LPC176X_IRQ_I2S   27U
 
#define LPC176X_IRQ_SD_MMC   29U
 
#define LPC176X_IRQ_MCPWM   30U
 
#define LPC176X_IRQ_QEI   31U
 
#define LPC176X_IRQ_PLL_ALT   32U
 
#define LPC176X_IRQ_USB_ACTIVITY   33U
 
#define LPC176X_IRQ_CAN_ACTIVITY   34U
 
#define LPC176X_IRQ_UART_4   35U
 
#define LPC176X_IRQ_GPIO   38U
 
#define LPC176X_IRQ_PWM   39U
 
#define LPC176X_IRQ_EEPROM   40U
 
#define BSP_INTERRUPT_VECTOR_COUNT   41
 
#define LPC176X_IRQ_PRIORITY_VALUE_MIN   0U
 
#define LPC176X_IRQ_PRIORITY_VALUE_MAX   31U
 
#define LPC176X_IRQ_PRIORITY_COUNT   ( LPC176X_IRQ_PRIORITY_VALUE_MAX + 1U )
 
#define LPC176X_IRQ_PRIORITY_HIGHEST   LPC176X_IRQ_PRIORITY_VALUE_MIN
 
#define LPC176X_IRQ_PRIORITY_LOWEST   LPC176X_IRQ_PRIORITY_VALUE_MAX
 
#define LPC24XX_IRQ_WDT   0
 
#define LPC24XX_IRQ_TIMER_0   1
 
#define LPC24XX_IRQ_TIMER_1   2
 
#define LPC24XX_IRQ_TIMER_2   3
 
#define LPC24XX_IRQ_TIMER_3   4
 
#define LPC24XX_IRQ_UART_0   5
 
#define LPC24XX_IRQ_UART_1   6
 
#define LPC24XX_IRQ_UART_2   7
 
#define LPC24XX_IRQ_UART_3   8
 
#define LPC24XX_IRQ_PWM_1   9
 
#define LPC24XX_IRQ_I2C_0   10
 
#define LPC24XX_IRQ_I2C_1   11
 
#define LPC24XX_IRQ_I2C_2   12
 
#define LPC24XX_IRQ_SPI_SSP_0   14
 
#define LPC24XX_IRQ_SSP_1   15
 
#define LPC24XX_IRQ_PLL   16
 
#define LPC24XX_IRQ_RTC   17
 
#define LPC24XX_IRQ_EINT_0   18
 
#define LPC24XX_IRQ_EINT_1   19
 
#define LPC24XX_IRQ_EINT_2   20
 
#define LPC24XX_IRQ_EINT_3   21
 
#define LPC24XX_IRQ_ADC_0   22
 
#define LPC24XX_IRQ_BOD   23
 
#define LPC24XX_IRQ_USB   24
 
#define LPC24XX_IRQ_CAN   25
 
#define LPC24XX_IRQ_DMA   26
 
#define LPC24XX_IRQ_I2S   27
 
#define LPC24XX_IRQ_ETHERNET   28
 
#define LPC24XX_IRQ_SD_MMC   29
 
#define LPC24XX_IRQ_MCPWM   30
 
#define LPC24XX_IRQ_QEI   31
 
#define LPC24XX_IRQ_PLL_ALT   32
 
#define LPC24XX_IRQ_USB_ACTIVITY   33
 
#define LPC24XX_IRQ_CAN_ACTIVITY   34
 
#define LPC24XX_IRQ_UART_4   35
 
#define LPC24XX_IRQ_SSP_2   36
 
#define LPC24XX_IRQ_LCD   37
 
#define LPC24XX_IRQ_GPIO   38
 
#define LPC24XX_IRQ_PWM   39
 
#define LPC24XX_IRQ_EEPROM   40
 
#define BSP_INTERRUPT_VECTOR_COUNT   41
 
#define LPC24XX_IRQ_PRIORITY_VALUE_MIN   0
 
#define LPC24XX_IRQ_PRIORITY_VALUE_MAX   255
 
#define LPC24XX_IRQ_PRIORITY_COUNT   (LPC24XX_IRQ_PRIORITY_VALUE_MAX + 1)
 
#define LPC24XX_IRQ_PRIORITY_HIGHEST   LPC24XX_IRQ_PRIORITY_VALUE_MIN
 
#define LPC24XX_IRQ_PRIORITY_LOWEST   LPC24XX_IRQ_PRIORITY_VALUE_MAX
 
#define BSP_INTERRUPT_VECTOR_COUNT   32
 Maximum vector number.
 
#define AU1X00_IRQ_SW0   (MIPS_INTERRUPT_BASE + 0)
 
#define AU1X00_IRQ_SW1   (MIPS_INTERRUPT_BASE + 1)
 
#define AU1X00_IRQ_IC0_REQ0   (MIPS_INTERRUPT_BASE + 2)
 
#define AU1X00_IRQ_IC0_REQ1   (MIPS_INTERRUPT_BASE + 3)
 
#define AU1X00_IRQ_IC1_REQ0   (MIPS_INTERRUPT_BASE + 4)
 
#define AU1X00_IRQ_IC1_REQ1   (MIPS_INTERRUPT_BASE + 5)
 
#define AU1X00_IRQ_PERF   (MIPS_INTERRUPT_BASE + 6)
 
#define AU1X00_IRQ_CNT   (MIPS_INTERRUPT_BASE + 7)
 
#define AU1X00_IRQ_IC0_BASE   (MIPS_INTERRUPT_BASE + 8)
 
#define AU1X00_IRQ_UART0   (MIPS_INTERRUPT_BASE + 8)
 
#define AU1X00_IRQ_INTA   (MIPS_INTERRUPT_BASE + 9)
 
#define AU1X00_IRQ_INTB   (MIPS_INTERRUPT_BASE + 10)
 
#define AU1X00_IRQ_UART3   (MIPS_INTERRUPT_BASE + 11)
 
#define AU1X00_IRQ_INTC   (MIPS_INTERRUPT_BASE + 12)
 
#define AU1X00_IRQ_INTD   (MIPS_INTERRUPT_BASE + 13)
 
#define AU1X00_IRQ_DMA0   (MIPS_INTERRUPT_BASE + 14)
 
#define AU1X00_IRQ_DMA1   (MIPS_INTERRUPT_BASE + 15)
 
#define AU1X00_IRQ_DMA2   (MIPS_INTERRUPT_BASE + 16)
 
#define AU1X00_IRQ_DMA3   (MIPS_INTERRUPT_BASE + 17)
 
#define AU1X00_IRQ_DMA4   (MIPS_INTERRUPT_BASE + 18)
 
#define AU1X00_IRQ_DMA5   (MIPS_INTERRUPT_BASE + 19)
 
#define AU1X00_IRQ_DMA6   (MIPS_INTERRUPT_BASE + 20)
 
#define AU1X00_IRQ_DMA7   (MIPS_INTERRUPT_BASE + 21)
 
#define AU1X00_IRQ_TOY_TICK   (MIPS_INTERRUPT_BASE + 22)
 
#define AU1X00_IRQ_TOY_MATCH0   (MIPS_INTERRUPT_BASE + 23)
 
#define AU1X00_IRQ_TOY_MATCH1   (MIPS_INTERRUPT_BASE + 24)
 
#define AU1X00_IRQ_TOY_MATCH2   (MIPS_INTERRUPT_BASE + 25)
 
#define AU1X00_IRQ_RTC_TICK   (MIPS_INTERRUPT_BASE + 26)
 
#define AU1X00_IRQ_RTC_MATCH0   (MIPS_INTERRUPT_BASE + 27)
 
#define AU1X00_IRQ_RTC_MATCH1   (MIPS_INTERRUPT_BASE + 28)
 
#define AU1X00_IRQ_RTC_MATCH2   (MIPS_INTERRUPT_BASE + 29)
 
#define AU1X00_IRQ_PCI_ERR   (MIPS_INTERRUPT_BASE + 30)
 
#define AU1X00_IRQ_RSV0   (MIPS_INTERRUPT_BASE + 31)
 
#define AU1X00_IRQ_USB_DEV   (MIPS_INTERRUPT_BASE + 32)
 
#define AU1X00_IRQ_USB_SUSPEND   (MIPS_INTERRUPT_BASE + 33)
 
#define AU1X00_IRQ_USB_HOST   (MIPS_INTERRUPT_BASE + 34)
 
#define AU1X00_IRQ_AC97_ACSYNC   (MIPS_INTERRUPT_BASE + 35)
 
#define AU1X00_IRQ_MAC0   (MIPS_INTERRUPT_BASE + 36)
 
#define AU1X00_IRQ_MAC1   (MIPS_INTERRUPT_BASE + 37)
 
#define AU1X00_IRQ_RSV1   (MIPS_INTERRUPT_BASE + 38)
 
#define AU1X00_IRQ_AC97_CMD   (MIPS_INTERRUPT_BASE + 39)
 
#define AU1X00_IRQ_IC1_BASE   (MIPS_INTERRUPT_BASE + 40)
 
#define AU1X00_IRQ_GPIO0   (MIPS_INTERRUPT_BASE + 40)
 
#define AU1X00_IRQ_GPIO1   (MIPS_INTERRUPT_BASE + 41)
 
#define AU1X00_IRQ_GPIO2   (MIPS_INTERRUPT_BASE + 42)
 
#define AU1X00_IRQ_GPIO3   (MIPS_INTERRUPT_BASE + 43)
 
#define AU1X00_IRQ_GPIO4   (MIPS_INTERRUPT_BASE + 44)
 
#define AU1X00_IRQ_GPIO5   (MIPS_INTERRUPT_BASE + 45)
 
#define AU1X00_IRQ_GPIO6   (MIPS_INTERRUPT_BASE + 46)
 
#define AU1X00_IRQ_GPIO7   (MIPS_INTERRUPT_BASE + 47)
 
#define AU1X00_IRQ_GPIO8   (MIPS_INTERRUPT_BASE + 48)
 
#define AU1X00_IRQ_GPIO9   (MIPS_INTERRUPT_BASE + 49)
 
#define AU1X00_IRQ_GPIO10   (MIPS_INTERRUPT_BASE + 50)
 
#define AU1X00_IRQ_GPIO11   (MIPS_INTERRUPT_BASE + 51)
 
#define AU1X00_IRQ_GPIO12   (MIPS_INTERRUPT_BASE + 52)
 
#define AU1X00_IRQ_GPIO13   (MIPS_INTERRUPT_BASE + 53)
 
#define AU1X00_IRQ_GPIO14   (MIPS_INTERRUPT_BASE + 54)
 
#define AU1X00_IRQ_GPIO15   (MIPS_INTERRUPT_BASE + 55)
 
#define AU1X00_IRQ_GPIO200   (MIPS_INTERRUPT_BASE + 56)
 
#define AU1X00_IRQ_GPIO201   (MIPS_INTERRUPT_BASE + 57)
 
#define AU1X00_IRQ_GPIO202   (MIPS_INTERRUPT_BASE + 58)
 
#define AU1X00_IRQ_GPIO203   (MIPS_INTERRUPT_BASE + 59)
 
#define AU1X00_IRQ_GPIO20   (MIPS_INTERRUPT_BASE + 60)
 
#define AU1X00_IRQ_GPIO204   (MIPS_INTERRUPT_BASE + 61)
 
#define AU1X00_IRQ_GPIO205   (MIPS_INTERRUPT_BASE + 62)
 
#define AU1X00_IRQ_GPIO23   (MIPS_INTERRUPT_BASE + 63)
 
#define AU1X00_IRQ_GPIO24   (MIPS_INTERRUPT_BASE + 64)
 
#define AU1X00_IRQ_GPIO25   (MIPS_INTERRUPT_BASE + 65)
 
#define AU1X00_IRQ_GPIO26   (MIPS_INTERRUPT_BASE + 66)
 
#define AU1X00_IRQ_GPIO27   (MIPS_INTERRUPT_BASE + 67)
 
#define AU1X00_IRQ_GPIO28   (MIPS_INTERRUPT_BASE + 68)
 
#define AU1X00_IRQ_GPIO206   (MIPS_INTERRUPT_BASE + 69)
 
#define AU1X00_IRQ_GPIO207   (MIPS_INTERRUPT_BASE + 70)
 
#define AU1X00_IRQ_GPIO208_215   (MIPS_INTERRUPT_BASE + 71)
 
#define AU1X00_MAXIMUM_VECTORS   (MIPS_INTERRUPT_BASE + 72)
 
#define BSP_INTERRUPT_VECTOR_COUNT   (AU1X00_MAXIMUM_VECTORS + 1)
 
#define RM5231_MAXIMUM_VECTORS   (MIPS_INTERRUPT_BASE+8)
 
#define BSP_INTERRUPT_VECTOR_COUNT   (RM5231_MAXIMUM_VECTORS + 1)
 
#define TX3904_IRQ_INT1   MIPS_INTERRUPT_BASE+0
 
#define TX3904_IRQ_INT2   MIPS_INTERRUPT_BASE+1
 
#define TX3904_IRQ_INT3   MIPS_INTERRUPT_BASE+2
 
#define TX3904_IRQ_INT4   MIPS_INTERRUPT_BASE+3
 
#define TX3904_IRQ_INT5   MIPS_INTERRUPT_BASE+4
 
#define TX3904_IRQ_INT6   MIPS_INTERRUPT_BASE+5
 
#define TX3904_IRQ_INT7   MIPS_INTERRUPT_BASE+6
 
#define TX3904_IRQ_DMAC3   MIPS_INTERRUPT_BASE+7
 
#define TX3904_IRQ_DMAC2   MIPS_INTERRUPT_BASE+8
 
#define TX3904_IRQ_DMAC1   MIPS_INTERRUPT_BASE+9
 
#define TX3904_IRQ_DMAC0   MIPS_INTERRUPT_BASE+10
 
#define TX3904_IRQ_SIO0   MIPS_INTERRUPT_BASE+11
 
#define TX3904_IRQ_SIO1   MIPS_INTERRUPT_BASE+12
 
#define TX3904_IRQ_TMR0   MIPS_INTERRUPT_BASE+13
 
#define TX3904_IRQ_TMR1   MIPS_INTERRUPT_BASE+14
 
#define TX3904_IRQ_TMR2   MIPS_INTERRUPT_BASE+15
 
#define TX3904_IRQ_INT0   MIPS_INTERRUPT_BASE+16
 
#define TX3904_IRQ_SOFTWARE_1   MIPS_INTERRUPT_BASE+17
 
#define TX3904_IRQ_SOFTWARE_2   MIPS_INTERRUPT_BASE+18
 
#define TX3904_MAXIMUM_VECTORS   MIPS_INTERRUPT_BASE+19
 
#define BSP_INTERRUPT_VECTOR_COUNT   (TX3904_MAXIMUM_VECTORS + 1)
 
#define MALTA_CPU_INT_START   MIPS_INTERRUPT_BASE+0
 
#define MALTA_CPU_INT_SW0   MALTA_CPU_INT_START+0
 
#define MALTA_CPU_INT_SW2   MALTA_CPU_INT_START+1
 
#define MALTA_CPU_INT0   MALTA_CPU_INT_START+2
 
#define MALTA_CPU_INT1   MALTA_CPU_INT_START+3
 
#define MALTA_CPU_INT2   MALTA_CPU_INT_START+4
 
#define MALTA_CPU_INT3   MALTA_CPU_INT_START+5
 
#define MALTA_CPU_INT4   MALTA_CPU_INT_START+6
 
#define MALTA_CPU_INT5   MALTA_CPU_INT_START+7
 
#define MALTA_CPU_INT_LAST   MALTA_CPU_INT5
 
#define MALTA_SB_IRQ_START   MALTA_CPU_INT_LAST+1
 
#define MALTA_SB_IRQ_0   MALTA_SB_IRQ_START+0
 
#define MALTA_SB_IRQ_1   MALTA_SB_IRQ_START+1
 
#define MALTA_SB_IRQ_2   MALTA_SB_IRQ_START+2
 
#define MALTA_SB_IRQ_3   MALTA_SB_IRQ_START+3
 
#define MALTA_SB_IRQ_4   MALTA_SB_IRQ_START+4
 
#define MALTA_SB_IRQ_5   MALTA_SB_IRQ_START+5
 
#define MALTA_SB_IRQ_6   MALTA_SB_IRQ_START+6
 
#define MALTA_SB_IRQ_7   MALTA_SB_IRQ_START+7
 
#define MALTA_SB_IRQ_8   MALTA_SB_IRQ_START+8
 
#define MALTA_SB_IRQ_9   MALTA_SB_IRQ_START+9
 
#define MALTA_SB_IRQ_10   MALTA_SB_IRQ_START+10
 
#define MALTA_SB_IRQ_11   MALTA_SB_IRQ_START+11
 
#define MALTA_SB_IRQ_12   MALTA_SB_IRQ_START+12
 
#define MALTA_SB_IRQ_13   MALTA_SB_IRQ_START+13
 
#define MALTA_SB_IRQ_14   MALTA_SB_IRQ_START+14
 
#define MALTA_SB_IRQ_15   MALTA_SB_IRQ_START+15
 
#define MALTA_SB_IRQ_LAST   MALTA_SB_IRQ_15
 
#define MALTA_PCI_ADP_START   MALTA_SB_IRQ_LAST+1
 
#define MALTA_PCI_ADP20   MALTA_PCI_ADP_START+0
 
#define MALTA_PCI_ADP21   MALTA_PCI_ADP_START+1
 
#define MALTA_PCI_ADP22   MALTA_PCI_ADP_START+2
 
#define MALTA_PCI_ADP27   MALTA_PCI_ADP_START+3
 
#define MALTA_PCI_ADP28   MALTA_PCI_ADP_START+4
 
#define MALTA_PCI_ADP29   MALTA_PCI_ADP_START+5
 
#define MALTA_PCI_ADP30   MALTA_PCI_ADP_START+6
 
#define MALTA_PCI_ADP31   MALTA_PCI_ADP_START+7
 
#define MALTA_PCI_ADP_LAST   MALTA_PCI_ADP31
 
#define BSP_INTERRUPT_VECTOR_COUNT   (MALTA_PCI_ADP_LAST + 1)
 
#define MALTA_INT_SOUTHBRIDGE_INTR   MALTA_CPU_INT0
 
#define MALTA_INT_SOUTHBRIDGE_SMI   MALTA_CPU_INT1
 
#define MALTA_INT_TTY2   MALTA_CPU_INT2
 
#define MALTA_INT_COREHI   MALTA_CPU_INT3
 
#define MALTA_INT_CORELO   MALTA_CPU_INT4
 
#define MALTA_INT_TICKER   MALTA_CPU_INT5
 
#define MALTA_IRQ_TIMER_SOUTH_BRIDGE   MALTA_SB_IRQ_0
 
#define MALTA_IRQ_KEYBOARD_SUPERIO   MALTA_SB_IRQ_1
 
#define MALTA_IRQ_RESERVED1_SOUTH_BRIDGE   MALTA_SB_IRQ_2
 
#define MALTA_IRQ_TTY1   MALTA_SB_IRQ_3
 
#define MALTA_IRQ_TTY0   MALTA_SB_IRQ_4
 
#define MALTA_IRQ_NOT_USED   MALTA_SB_IRQ_5
 
#define MALTA_IRQ_FLOPPY_SUPERIO   MALTA_SB_IRQ_6
 
#define MALTA_IRQ_PARALLEL_PORT_SUPERIO   MALTA_SB_IRQ_7
 
#define MALTA_IRQ_REALTIME_CLOCK_SOUTH_BRIDGE   MALTA_SB_IRQ_8
 
#define MALTA_IRQ_I2C_SOUTH_BRIDGE   MALTA_SB_IRQ_9
 
#define MALTA_IRQ_PCI_A_B   MALTA_SB_IRQ_10
 
#define MALTA_IRQ_PCI_C_D   MALTA_SB_IRQ_11
 
#define MALTA_IRQ_MOUSE_SUPERIO   MALTA_SB_IRQ_12
 
#define MALTA_IRQ_RESERVED2_SOUTH_BRIDGE   MALTA_SB_IRQ_13
 
#define MALTA_IRQ_PRIMARY_IDE   MALTA_SB_IRQ_14
 
#define MALTA_IRQ_SECONDARY_IDE   MALTA_SB_IRQ_15
 
#define MALTA_IRQ_SOUTH_BRIDGE   MALTA_PCI_ADP20
 
#define MALTA_IRQ_ETHERNET   MALTA_IRQ_PCI_A_B
 
#define MALTA_IRQ_AUDIO   MALTA_PCI_ADP22
 
#define MALTA_IRQ_CORE_CARD   MALTA_PCI_ADP27
 
#define MALTA_IRQ_PCI_CONNECTOR_1   MALTA_PCI_ADP28
 
#define MALTA_IRQ_PCI_CONNECTOR_2   MALTA_PCI_ADP29
 
#define MALTA_IRQ_PCI_CONNECTOR_3   MALTA_PCI_ADP30
 
#define MALTA_IRQ_PCI_CONNECTOR_4   MALTA_PCI_ADP31
 
#define TX4925_IRQ_RSV1   MIPS_INTERRUPT_BASE+0
 
#define TX4925_IRQ_WTE   MIPS_INTERRUPT_BASE+1
 
#define TX4925_IRQ_INT0   MIPS_INTERRUPT_BASE+2
 
#define TX4925_IRQ_INT1   MIPS_INTERRUPT_BASE+3
 
#define TX4925_IRQ_INT2   MIPS_INTERRUPT_BASE+4
 
#define TX4925_IRQ_INT3   MIPS_INTERRUPT_BASE+5
 
#define TX4925_IRQ_INT4   MIPS_INTERRUPT_BASE+6
 
#define TX4925_IRQ_INT5   MIPS_INTERRUPT_BASE+7
 
#define TX4925_IRQ_INT6   MIPS_INTERRUPT_BASE+8
 
#define TX4925_IRQ_INT7   MIPS_INTERRUPT_BASE+9
 
#define TX4925_IRQ_RSV2   MIPS_INTERRUPT_BASE+10
 
#define TX4925_IRQ_NAND   MIPS_INTERRUPT_BASE+11
 
#define TX4925_IRQ_SIO0   MIPS_INTERRUPT_BASE+12
 
#define TX4925_IRQ_SIO1   MIPS_INTERRUPT_BASE+13
 
#define TX4925_IRQ_DMAC0   MIPS_INTERRUPT_BASE+14
 
#define TX4925_IRQ_DMAC1   MIPS_INTERRUPT_BASE+15
 
#define TX4925_IRQ_DMAC2   MIPS_INTERRUPT_BASE+16
 
#define TX4925_IRQ_DMAC3   MIPS_INTERRUPT_BASE+17
 
#define TX4925_IRQ_IRC   MIPS_INTERRUPT_BASE+18
 
#define TX4925_IRQ_PDMAC   MIPS_INTERRUPT_BASE+19
 
#define TX4925_IRQ_PCIC   MIPS_INTERRUPT_BASE+20
 
#define TX4925_IRQ_TMR0   MIPS_INTERRUPT_BASE+21
 
#define TX4925_IRQ_TMR1   MIPS_INTERRUPT_BASE+22
 
#define TX4925_IRQ_TMR2   MIPS_INTERRUPT_BASE+23
 
#define TX4925_IRQ_SPI   MIPS_INTERRUPT_BASE+24
 
#define TX4925_IRQ_RTC   MIPS_INTERRUPT_BASE+25
 
#define TX4925_IRQ_ACLC   MIPS_INTERRUPT_BASE+26
 
#define TX4925_IRQ_ACLCPME   MIPS_INTERRUPT_BASE+27
 
#define TX4925_IRQ_CHI   MIPS_INTERRUPT_BASE+28
 
#define TX4925_IRQ_PCIERR   MIPS_INTERRUPT_BASE+29
 
#define TX4925_IRQ_PCIPME   MIPS_INTERRUPT_BASE+30
 
#define TX4925_IRQ_RSV3   MIPS_INTERRUPT_BASE+31
 
#define TX4925_IRQ_SOFTWARE_1   MIPS_INTERRUPT_BASE+32
 
#define TX4925_IRQ_SOFTWARE_2   MIPS_INTERRUPT_BASE+33
 
#define TX4925_MAXIMUM_VECTORS   MIPS_INTERRUPT_BASE+34
 
#define BSP_INTERRUPT_VECTOR_COUNT   (TX4925_MAXIMUM_VECTORS + 1)
 
#define TX4938_IRQ_ECC   MIPS_INTERRUPT_BASE+0
 
#define TX4938_IRQ_WTE   MIPS_INTERRUPT_BASE+1
 
#define TX4938_IRQ_INT0   MIPS_INTERRUPT_BASE+2
 
#define TX4938_IRQ_INT1   MIPS_INTERRUPT_BASE+3
 
#define TX4938_IRQ_INT2   MIPS_INTERRUPT_BASE+4
 
#define TX4938_IRQ_INT3   MIPS_INTERRUPT_BASE+5
 
#define TX4938_IRQ_INT4   MIPS_INTERRUPT_BASE+6
 
#define TX4938_IRQ_INT5   MIPS_INTERRUPT_BASE+7
 
#define TX4938_IRQ_SIO0   MIPS_INTERRUPT_BASE+8
 
#define TX4938_IRQ_SIO1   MIPS_INTERRUPT_BASE+9
 
#define TX4938_IRQ_DMAC00   MIPS_INTERRUPT_BASE+10
 
#define TX4938_IRQ_DMAC01   MIPS_INTERRUPT_BASE+11
 
#define TX4938_IRQ_DMAC02   MIPS_INTERRUPT_BASE+12
 
#define TX4938_IRQ_DMAC03   MIPS_INTERRUPT_BASE+13
 
#define TX4938_IRQ_IRC   MIPS_INTERRUPT_BASE+14
 
#define TX4938_IRQ_PDMAC   MIPS_INTERRUPT_BASE+15
 
#define TX4938_IRQ_PCIC   MIPS_INTERRUPT_BASE+16
 
#define TX4938_IRQ_TMR0   MIPS_INTERRUPT_BASE+17
 
#define TX4938_IRQ_TMR1   MIPS_INTERRUPT_BASE+18
 
#define TX4938_IRQ_TMR2   MIPS_INTERRUPT_BASE+19
 
#define TX4938_IRQ_RSV1   MIPS_INTERRUPT_BASE+20
 
#define TX4938_IRQ_NDFMC   MIPS_INTERRUPT_BASE+21
 
#define TX4938_IRQ_PCIERR   MIPS_INTERRUPT_BASE+22
 
#define TX4938_IRQ_PCIPMC   MIPS_INTERRUPT_BASE+23
 
#define TX4938_IRQ_ACLC   MIPS_INTERRUPT_BASE+24
 
#define TX4938_IRQ_ACLCPME   MIPS_INTERRUPT_BASE+25
 
#define TX4938_IRQ_ACLCPME   MIPS_INTERRUPT_BASE+27
 
#define TX4938_IRQ_PCIC1NT   MIPS_INTERRUPT_BASE+26
 
#define TX4938_IRQ_DMAC10   MIPS_INTERRUPT_BASE+28
 
#define TX4938_IRQ_DMAC11   MIPS_INTERRUPT_BASE+29
 
#define TX4938_IRQ_DMAC12   MIPS_INTERRUPT_BASE+30
 
#define TX4938_IRQ_DMAC13   MIPS_INTERRUPT_BASE+31
 
#define TX4938_IRQ_SOFTWARE_1   MIPS_INTERRUPT_BASE+32
 
#define TX4938_IRQ_SOFTWARE_2   MIPS_INTERRUPT_BASE+33
 
#define TX4938_MAXIMUM_VECTORS   MIPS_INTERRUPT_BASE+34
 
#define BSP_INTERRUPT_VECTOR_COUNT   (TX4938_MAXIMUM_VECTORS + 1)
 
#define BSP_INTERRUPT_VECTOR_COUNT   (MPC55XX_IRQ_MAX + 1)
 

Functions

void lpc176x_irq_set_priority (rtems_vector_number vector, unsigned priority)
 Sets the priority according to the current interruption.
 
unsigned lpc176x_irq_get_priority (rtems_vector_number vector)
 Gets the priority number according to the current interruption.
 
void bsp_interrupt_handler_default (rtems_vector_number vector)
 Default interrupt handler.
 
void bsp_interrupt_initialize (void)
 Initialize Interrupt Manager implementation.
 
void bsp_interrupt_facility_initialize (void)
 BSP specific initialization.
 
rtems_status_code bsp_interrupt_get_attributes (rtems_vector_number vector, rtems_interrupt_attributes *attributes)
 Gets the attributes of the interrupt vector.
 
rtems_status_code bsp_interrupt_vector_is_enabled (rtems_vector_number vector, bool *enabled)
 Checks if the interrupt is enabled.
 
rtems_status_code bsp_interrupt_vector_enable (rtems_vector_number vector)
 Enables the interrupt vector.
 
rtems_status_code bsp_interrupt_vector_disable (rtems_vector_number vector)
 Disables the interrupt vector.
 
rtems_status_code bsp_interrupt_is_pending (rtems_vector_number vector, bool *pending)
 Checks if the interrupt is pending.
 
rtems_status_code bsp_interrupt_raise (rtems_vector_number vector)
 Causes the interrupt vector.
 
rtems_status_code bsp_interrupt_clear (rtems_vector_number vector)
 Clears the interrupt vector.
 
rtems_status_code bsp_interrupt_get_priority (rtems_vector_number vector, uint32_t *priority)
 Gets the priority of the interrupt vector.
 
rtems_status_code bsp_interrupt_set_priority (rtems_vector_number vector, uint32_t priority)
 Sets the priority of the interrupt vector.
 
rtems_status_code bsp_interrupt_get_affinity (rtems_vector_number vector, Processor_mask *affinity)
 Gets the processor affinity set of the interrupt vector.
 
rtems_status_code bsp_interrupt_set_affinity (rtems_vector_number vector, const Processor_mask *affinity)
 Sets the processor affinity set of the interrupt vector.
 

Detailed Description

This group contains the Interrupt Manager implementation.

The Interrupt Manager implementation manages a sequence of interrupt vector numbers greater than or equal to zero and less than BSP_INTERRUPT_VECTOR_COUNT. It provides methods to install, remove, and dispatch interrupt entries for each vector number, see bsp_interrupt_dispatch_entries().

The entry points to a list of interrupt entries are stored in a table (= dispatch table).

You have to configure the Interrupt Manager implementation in the <bsp/irq.h> file for each BSP. For a minimum configuration you have to provide BSP_INTERRUPT_VECTOR_COUNT.

For boards with small memory requirements you can define BSP_INTERRUPT_USE_INDEX_TABLE. With an enabled index table the dispatch table will be accessed via a small index table. You can define the size of the dispatch table with BSP_INTERRUPT_DISPATCH_TABLE_SIZE.

You have to provide some special routines in your BSP (follow the links for the details):

Optionally, the BSP may define the following macros to customize the vector installation after installing the first entry and the vector removal before removing the last entry:

The following now deprecated functions are provided for backward compatibility:

Function Documentation

◆ bsp_interrupt_clear()

rtems_status_code bsp_interrupt_clear ( rtems_vector_number  vector)

Clears the interrupt vector.

Parameters
vectoris the number of the interrupt vector to clear. It shall be valid.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_UNSATISFIEDThe request to cause the interrupt vector has not been satisfied. The presence of this error condition is implementation-defined. The interrupt vector attributes obtained by rtems_interrupt_get_attributes() should indicate if it is possible to clear a particular interrupt vector.

◆ bsp_interrupt_facility_initialize()

void bsp_interrupt_facility_initialize ( void  )

BSP specific initialization.

This routine will be called form bsp_interrupt_initialize() and shall do the following:

  • Initialize the facilities that call bsp_interrupt_handler_dispatch(). For example on PowerPC the external exception handler.
  • Initialize the interrupt controller. You shall set the interrupt controller in a state such that interrupts are disabled for all vectors. The vectors will be enabled with your bsp_interrupt_vector_enable() function and disabled via your bsp_interrupt_vector_disable() function. These functions have to work afterwards.

BSP specific initialization.

Resets vectored interrupt interface to default state. Disables all interrupts. Set all sources as IRQ (not FIR).

Return values
RTEMS_SUCCESSFULAll is set

◆ bsp_interrupt_get_affinity()

rtems_status_code bsp_interrupt_get_affinity ( rtems_vector_number  vector,
Processor_mask *  affinity 
)

Gets the processor affinity set of the interrupt vector.

The function may have no implementation in uniprocessor configurations.

Parameters
vectoris the interrupt vector number.
[out]affinityis the pointer to a Processor_mask object. When the directive call is successful, the processor affinity set of the interrupt vector will be stored in this object. A set bit in the processor set means that the corresponding processor is in the processor affinity set of the interrupt vector, otherwise the bit is cleared.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_UNSATISFIEDThe request to get the processor affinity of the interrupt vector has not been satisfied.

◆ bsp_interrupt_get_attributes()

rtems_status_code bsp_interrupt_get_attributes ( rtems_vector_number  vector,
rtems_interrupt_attributes attributes 
)

Gets the attributes of the interrupt vector.

Parameters
vectoris the interrupt vector number. It shall be valid.
[out]attributesis the pointer to an rtems_interrupt_attributes object. When the function call is successful, the attributes of the interrupt vector will be stored in this object. The pointer shall not be NULL. The object shall be cleared to zero by the caller.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.

Gets the attributes of the interrupt vector.

Enables HW interrupt for specified vector

Parameters
[in]vectorvector of the isr which needs to be enabled.
Return values
RTEMS_INVALID_IDvector is invalid.
RTEMS_SUCCESSFULinterrupt source enabled.

◆ bsp_interrupt_get_priority()

rtems_status_code bsp_interrupt_get_priority ( rtems_vector_number  vector,
uint32_t *  priority 
)

Gets the priority of the interrupt vector.

The return status shall correspond to the rtems_interrupt_attributes::can_get_priority value of the interrupt vector.

Parameters
vectoris the interrupt vector number. The vector number shall be less than BSP_INTERRUPT_VECTOR_COUNT.
[out]priorityis the pointer to an uint32_t object. When the directive call is successful, the priority of the interrupt vector will be stored in this object. The pointer shall be valid.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_UNSATISFIEDThere is no priority associated with the interrupt vector. This status shall be returned if the function is not implemented by the BSP.

◆ bsp_interrupt_handler_default()

void bsp_interrupt_handler_default ( rtems_vector_number  vector)

Default interrupt handler.

This routine will be called from bsp_interrupt_handler_dispatch() with the current vector number vector when the handler list for this vector is empty or the vector number is out of range.

Note
This function must cope with arbitrary vector numbers vector.

◆ bsp_interrupt_initialize()

void bsp_interrupt_initialize ( void  )

Initialize Interrupt Manager implementation.

You must call this function before you can install, remove and dispatch interrupt entries. There is no protection against concurrent initialization. This function must be called at most once. The BSP specific bsp_interrupt_facility_initialize() function will be called after all internals are initialized. If the BSP specific initialization fails, then this is a fatal error. The fatal error source is RTEMS_FATAL_SOURCE_BSP and the fatal error code is BSP_FATAL_INTERRUPT_INITIALIZATION.

◆ bsp_interrupt_is_pending()

rtems_status_code bsp_interrupt_is_pending ( rtems_vector_number  vector,
bool *  pending 
)

Checks if the interrupt is pending.

The function checks if the interrupt associated with the interrupt vector specified by vector was pending for the processor executing the function call at some time point during the call.

Parameters
vectoris the interrupt vector number. It shall be valid.
[out]pendingis the pointer to a bool object. It shall not be NULL. When the function call is successful, the pending status of the interrupt associated with the interrupt vector specified by vector will be stored in this object. When the interrupt was pending for the processor executing the function call at some time point during the call, the object will be set to true, otherwise to false.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_UNSATISFIEDThe request to get the pending status has not been satisfied.

◆ bsp_interrupt_raise()

rtems_status_code bsp_interrupt_raise ( rtems_vector_number  vector)

Causes the interrupt vector.

Parameters
vectoris the number of the interrupt vector to cause. It shall be valid.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_UNSATISFIEDThe request to raise the interrupt vector has not been satisfied. The presence of this error condition is implementation-defined. The interrupt vector attributes obtained by rtems_interrupt_get_attributes() should indicate if it is possible to raise a particular interrupt vector.

◆ bsp_interrupt_set_affinity()

rtems_status_code bsp_interrupt_set_affinity ( rtems_vector_number  vector,
const Processor_mask *  affinity 
)

Sets the processor affinity set of the interrupt vector.

The function may have no implementation in uniprocessor configurations.

Parameters
vectoris the interrupt vector number. It shall be valid.
affinityis the pointer to a Processor_mask object. The processor set defines the new processor affinity set of the interrupt vector. A set bit in the processor set means that the corresponding processor shall be in the processor affinity set of the interrupt vector, otherwise the bit shall be cleared.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_INVALID_NUMBERThe referenced processor set was not a valid new processor affinity set for the interrupt vector.
RTEMS_UNSATISFIEDThe request to set the processor affinity of the interrupt vector has not been satisfied.

◆ bsp_interrupt_set_priority()

rtems_status_code bsp_interrupt_set_priority ( rtems_vector_number  vector,
uint32_t  priority 
)

Sets the priority of the interrupt vector.

The return status shall correspond to the rtems_interrupt_attributes::can_set_priority value of the interrupt vector.

Parameters
vectoris the interrupt vector number. The vector number shall be less than BSP_INTERRUPT_VECTOR_COUNT.
priorityis the new priority for the interrupt vector.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_INVALID_PRIORITYThe priority specified by priority was not a valid new priority for the interrupt vector.
RTEMS_UNSATISFIEDThe request to set the priority of the interrupt vector has not been satisfied. This status shall be returned if the function is not implemented by the BSP.

◆ bsp_interrupt_vector_disable()

rtems_status_code bsp_interrupt_vector_disable ( rtems_vector_number  vector)

Disables the interrupt vector.

This function shall disable the vector at the corresponding facility (in most cases the interrupt controller). It will be called then the last entry is removed for the vector in rtems_interrupt_entry_remove() for example.

Note
The implementation should use bsp_interrupt_assert( bsp_interrupt_is_valid_vector( vector ) ) to validate the vector number in ::RTEMS_DEBUG configurations.
Parameters
vectoris the interrupt vector number.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_UNSATISFIEDThe request to disable the interrupt vector has not been satisfied. The presence of this error condition is implementation-defined. The interrupt vector attributes obtained by rtems_interrupt_get_attributes() should indicate if it is possible to disable a particular interrupt vector.

Disables the interrupt vector.

Disables HW interrupt for specified vector

Parameters
[in]vectorvector of the isr which needs to be disabled.
Return values
RTEMS_INVALID_IDvector is invalid.
RTEMS_SUCCESSFULinterrupt source disabled.

◆ bsp_interrupt_vector_enable()

rtems_status_code bsp_interrupt_vector_enable ( rtems_vector_number  vector)

Enables the interrupt vector.

This function shall enable the vector at the corresponding facility (in most cases the interrupt controller). It will be called then the first entry is installed for the vector in rtems_interrupt_entry_install() for example.

Note
The implementation should use bsp_interrupt_assert( bsp_interrupt_is_valid_vector( vector ) ) to validate the vector number in ::RTEMS_DEBUG configurations.
Parameters
vectoris the interrupt vector number.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.
RTEMS_UNSATISFIEDThe request to enable the interrupt vector has not been satisfied. The presence of this error condition is implementation-defined. The interrupt vector attributes obtained by rtems_interrupt_get_attributes() should indicate if it is possible to enable a particular interrupt vector.

◆ bsp_interrupt_vector_is_enabled()

rtems_status_code bsp_interrupt_vector_is_enabled ( rtems_vector_number  vector,
bool *  enabled 
)

Checks if the interrupt is enabled.

The function checks if the interrupt associated with the interrupt vector specified by vector was enabled for the processor executing the function call at some time point during the call.

Parameters
vectoris the interrupt vector number. It shall be valid.
[out]enabledis the pointer to a bool object. It shall not be NULL. When the function call is successful, the enabled status of the interrupt associated with the interrupt vector specified by vector will be stored in this object. When the interrupt was enabled for the processor executing the function call at some time point during the call, the object will be set to true, otherwise to false.
Return values
RTEMS_SUCCESSFULThe requested operation was successful.

◆ lpc176x_irq_get_priority()

unsigned lpc176x_irq_get_priority ( rtems_vector_number  vector)

Gets the priority number according to the current interruption.

Parameters
vectorInterrupts to be attended.
Returns
The priority number according to the current interruption.

◆ lpc176x_irq_set_priority()

void lpc176x_irq_set_priority ( rtems_vector_number  vector,
unsigned  priority 
)

Sets the priority according to the current interruption.

Parameters
vectorInterrupt to be attended.
priorityInterrupts priority.