![Intel IXP45X Developer'S Manual Download Page 809](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092809.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Developer’s Manual
Reference Number: 306262-004US
809
Interrupt Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
The Interrupt Error Enable Register is a 32-bit register that assigns each of the [63:32]
interrupts to be the special error interrupts. These interrupts take unconditional priority
over all other interrupts. Logic 1 written to a bit in the Interrupt Error Enable Register
will imply that the interrupt will take unconditional priority over all other interrupts. A
Logic 0 written to the same bit will imply that the interrupt has a simple positional
priority.
17.4.3
Enabling and Disabling Interrupts
The interrupts on the IXP45X/IXP46X network processors can be individually enabled
or disabled by writing to the pair of Interrupt-Enable Registers (INTR_EN/INTR_EN2).
By disabling an interrupt, the Intel XScale processor will not be interrupted by either
the FIQ interrupt signal or the IRQ interrupt signal when an interrupt occurs on the
corresponding disabled interrupt input.
For instance, interrupt number 0 is disabled and an interrupt occurs on interrupt
number 0. The interrupt generated by interrupt number 0 will not be seen by the Intel
XScale processor.
The Interrupt-Enable Register is a pair of 32-bit registers that can individually enable or
disable each of the 64 interrupts. Bit 0 of the Interrupt-Enable Register corresponds to
interrupt number 0 (NPE A). Bit 31 of the Interrupt-Enable Register 2 corresponds to
interrupt number 63.
Logic 1 written to a bit in the Interrupt-Enable Register will enable the corresponding
interrupt number. Writing logic 0 to the same bit in the Interrupt-Enable Register will
disable the corresponding interrupt number.
For example, the Interrupt-Enable Register is written with a hexadecimal value of
0x0000000A. The result of this write would enable interrupt number 1 (Ethernet NPE B)
and interrupt number 3 (Queue Manager Queues 1-32). All other interrupt numbers
would be disabled. All interrupts are disabled upon receiving a reset because the
register is cleared to 0x00000000.
17.4.4
Reading Interrupt Status
The IXP45X/IXP46X network processors provide several mechanisms in which interrupt
status can be obtained from the Interrupt Controller. One method of obtaining interrupt
status is to read the interrupt status register directly (INTR_ST/INTR_ST2).
The Interrupt Status Register is a pair of 32-bit registers that has a one-for-one
relationship with the interrupt number. Interrupt number 0 will be the status
represented on bit 0 of the Interrupt Status Register and interrupt number 31 will be
the status represented on bit 31 of the Interrupt Status Register. Interrupt numbers 32
to 63 are represented in the second status register.
Reading Logic 1 from a bit in the Interrupt Status Register represent that the device
connected to that particular interrupt number has asserted an interrupt to the Interrupt
Controller. For example, a read is performed on the Interrupt Status Register and the
result returned is a hexadecimal 0x00000002. The Interrupt Status Register is telling
the Intel XScale processor that the interrupt number 1 (Ethernet NPE B) has caused an
interrupt.
The Intel XScale processor will service the interrupt and clear the interrupt by updating
the register in the device that caused the interrupt condition (in this example, in the
Ethernet NPE B). To clear this specific interrupt will require updating registers in the
NPE A, not this interrupt controller. Using the Interrupt Status Register allows an
interrupt service routine to assign relative priorities to the interrupts and removes all