5 This component simulates the ARM reference interrupt controller.
7 Pins: reset interrupt fast-interrupt fast-interrupt-source
8 interrupt-source-0..interrupt-source-31
9 Buses: irq-registers fiq-registers
10 Attributes: interrupt fast-interrupt irq-raw-status irq-enable-register
11 fiq-raw-status fiq-enable-register
13 Library: libinterrupt.la
14 Symbol name: interrupt_component_library
20 * The interrupt controller model features a fast interrupt line
21 (to be attached to the fIRQ line of the CPU) and 32 general
24 * This component models ARM's abstract reference interrupt
25 controller, which is not exactly the same as the one found on
26 the PID7T evaluation board. The version on the PID7T board has
27 an additional "FIQSelect" register, and only 15 IRQ source pins.
33 When the "reset" input pin is driven, this component is reset to
34 the hardware's normal power-up state.
38 There are two available register busses for this model. The normal
39 IRQ registers are available on the "irq-registers" bus, and the FIQ
40 (fast) registers are available on the "fiq-registers" bus. Typically,
41 one would map the "fiq-registers" with an offset of 0x100 from the
42 "irq-registers". This allows one to map other devices between these
45 When the "irq-registers" bus is accessed, the appropriate 32-bit
46 control register is read or written.
49 0 IRQStatus (reserved)
50 0x4 IRQRawStatus (reserved)
51 0x8 IRQEnable IRQEnableSet
52 0xC (reserved) IRQEnableClear
53 0x10 (reserved) IRQSoft
55 When the "fiq-registers" bus is accessed, the appropriate 32-bit
56 control register is read or written.
59 0x0 FIQStatus (reserved)
60 0x4 FIQRawStatus (reserved)
61 0x8 FIQEnable FIQEnableSet
62 0xC (reserved) FIQEnableClear
64 Several registers are also available as watchable attributes.
66 * Interrupt processing
68 When any interrupt source is signalled, or interrupt-enabled
69 masks are modified, pending interrupts are processed. There are
70 three interrupt sources: the "interrupt-source-N" input pins,
71 the "fast-interrupt-source" input pin, and the special software
72 interrupt register. Subject to the then-current
73 interrupt-enabling registers, an "interrupt" and/or
74 "fast-interrupt" output pin may be driven.
76 The polarity for the input interrupt source pins is positive,
77 meaning that non-zero values are interpreted as "asserted". On
78 the other hand, the polarity for the output interrupt pins is
79 negative, meaning that zero values are to be interpreted as
82 Similarly named attributes may be used to generate/monitor pin
87 * This is a functional component.
88 * This component supports state save/restore and triggerpoints.
93 The interrupt controller typically sits between a CPU component, which
94 usually has only one interrupt pin, and an array of other peripheral
95 components. Each of the peripheral components is capable of generating
96 its own interrupt. The following configuration file fragment
97 demonstrates how to connect to simple timers into the interrupt
98 subsystem of a more complete simulation:
101 new hw-timer-arm/ref-nosched timer1
102 new hw-timer-arm/ref-nosched timer2
103 new hw-interrupt-arm/ref intcontrl
104 connect-pin timer1 interrupt -> intcontrl interrupt-source-0
105 connect-pin timer2 interrupt -> intcontrl interrupt-source-1
106 connect-pin intcontrl interrupt -> cpu nirq
108 * SID interface reference
112 - reset | input | any | reset
113 - fast-interrupt-source | input | any | interrupt handling
114 - interrupt-source-[0,31] | input | any | interrupt handling
115 - fast-interrupt | output | 0,1 | interrupt handling
116 - interrupt | output | 0,1 | interrupt handling
119 - irq-registers | 0x0 - 0x1C | read/write | register access
120 - fiq-registers | 0x0 - 0x0F | read/write | register access
123 - interrupt | pin watchable | numeric | n/a | interrupt handling
124 - fast-interrupt | pin watchable | numeric | n/a | interrupt handling
125 - irq-raw-status | register watchable | numeric | n/a | register access
126 - irq-enable-register | register watchable | numeric | n/a | register access
127 - fiq-raw-status | register watchable | numeric | n/a | register access
128 - fiq-enable-register | register watchable | numeric | n/a | register access
131 <http://www.arm.com/Documentation/UserMans/rps/#int>