![Intel IXP45X Скачать руководство пользователя страница 810](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092810.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors—Interrupt Controller
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Developer’s Manual
August 2006
810
Reference Number: 306262-004US
relationship from the priority algorithms or the interrupt types assigned by the
Interrupt Controller for the IXP45X/IXP46X network processors. The Interrupt Status
Register is set to all zeros upon reset.
All other methods of reading interrupt status will involve the use of the register sets
provided by the IXP45X/IXP46X network processors to aid in the determination of
which interrupts should be serviced first.
The IXP45X/IXP46X network processors provide the capability of reading the interrupt
status of the interrupt numbers that have been assigned as FIQ interrupts or reading
the interrupt status of the interrupt numbers that have been assigned as IRQ
interrupts. The status of the interrupt numbers that have been assigned as FIQ
interrupts can be read by reading the FIQ status register (INTR_FIQ_ST/
INTR_FIQ_ST2). The status of the interrupt numbers that have been assigned as IRQ
interrupts can be read by reading the IRQ status register (INTR_IRQ_ST/
INTR_IRQ_ST2).
The FIQ Status Register and the IRQ Status Register are 32-bit registers that have a
one-for-one relationship with the interrupt number. Interrupt number 0 (NPE A) will be
the status represented on bit 0 of both the FIQ Status Register and the IRQ Status
Registers. Interrupt number 31 will be the status represented on bit 31 of both the FIQ
Status Register and the IRQ Status Registers. Interrupt numbers 32 to 63 are
represented in the second status registers for both the IRQ and the FIQ.
Reading logic 1 from a bit in either the FIQ Status Register(s) or the IRQ Status
Register(s) represent that the device connected to that particular interrupt number has
asserted an interrupt to the Interrupt Controller and that the interrupt is enabled for
the FIQ or IRQ interrupts respectively. For example, a read is performed on the FIQ
Status Register and the result returned is a hexadecimal 0x00000001. The Interrupt
Status Register is telling the Intel XScale processor that the interrupt number 0 (NPE A)
has caused an interrupt and the interrupt is enabled as a FIQ interrupt.
The Intel XScale processor will service the interrupt and clear the interrupt by updating
the register that caused the interrupt condition in the NPE A. The same action will be
applied to an interrupt that would be caused by an IRQ interrupt. Allowing the
capability to separate the FIQ and IRQ interrupts allows separate interrupt service
routines to be built based on the type of interrupt received. This allows greater control
in applications that may be developed for the IXP45X/IXP46X network processors.
The FIQ Status Registers and IRQ Status Registers are set to all zeros upon reset.
The IXP45X/IXP46X network processors also allow the capability to read the highest-
priority IRQ interrupt or the highest-priority FIQ interrupt as determined by the priority
algorithm described in
“Interrupt Priority” on page 807
.
The highest-priority IRQ interrupt can be read by reading the IRQ Highest-Priority
Register (INTR_IRQ_ENC_ST). The highest-priority FIQ interrupt can be read by
reading the FIQ Highest-Priority Register (INTR_FIQ_ENC_ST). The IRQ Highest-
Priority Register and the FIQ Highest-Priority Registers are 7-bit registers that will
return the highest-priority interrupt number (i.e. its position) of each the IRQ interrupts
and the FIQ interrupts. Note that the value of the encoding status registers is always
the positional value, and this is true even if the lower bits are programmed in a
different priority order. For example, if position 0 is actually set to priority 7 via the
INTR_PRTY register, and it is the highest priority interrupt (because positions 7:1 are
not interrupting) the value of the encoding status register will be zero, because that is
the position of the interrupt, not the value 7 which is its priority.
The value obtained by reading the IRQ Highest-Priority Register will be the interrupt
number of the highest-priority IRQ interrupt, incremented by one and the sum of the
add left shifted by two bits. Therefore, the seven bits — that contain the IRQ highest
priority — are actually located in bits 2 through 8 of the IRQ Highest-Priority Register.