![](http://datasheet.mmic.net.cn/110000/GT-96100A_datasheet_3491740/GT-96100A_424.png)
GT-96100A Advanced Communication Controller
424
Revision 1.0
21. INTERRUPT CONTROLLER
The GT-96100A provides four interrupt pins that can be used for generating interrupts to the CPU:
Interrupt0*
Interrupt1*
SerInt0*
SerInt1*
The GT-96100A also integrates a programmable interrupt controller that is capable of routing each of the internal
interrupt requests to one (or more) of the interrupt pins. The interrupt controller performs a logical OR of all
internal interrupt events and asserts an interrupt to the CPU when at least one of the (unmasked) events is set.
The interrupt pins provided by the GT-96100A can be used in any system which supports multiple interrupt sig-
nals. If the CPU is capable of handling multiple interrupt inputs, connect the GT-96100A pins directly to the
CPU. If the system requires a PCI directed interrupt, connect one of the pins to the PCI and the remaining pins to
the CPU.
The two serial interrupt pins (SerInt0*, SerInt1*) allow separation of communication interrupts from other sys-
tem events. Only events that originate within the communication unit can be routed to the serial interrupt pins.
21.1
Interrupt Cause Registers
There are two high-level interrupt cause registers, which serve to indicate the occurrence of certain events. One
cause register (Main_Cause register) consists of events originating in the GT-96100A’s system controller logic.
This register is located at offset 0x000C18.
The other cause register (High_Cause register) consists of events originating in the PCI_1 unit and the communi-
cation unit. This register is located at offset 0x000C1C.
NOTE: There is another cause register dedicated to communication events. This register (Serial_Cause register)
is located at 0x103A00.
When an interrupt event occurs, a bit in one of the cause registers is set. All bits in the cause register(s) are ORed
together, and the result is driven on one of the Interrupt* lines. The Interrupt* causes the CPU to read the inter-
rupt cause registers and run a service routine depending on the interrupt being serviced.
The interrupt is acknowledged by the CPU resetting bits in the cause register. The specific bit that is reset
depends on the interrupt event being serviced. Reset a bit by writing ‘0’ to this bit and ‘1’ to all other bits.
NOTE: An exception to the above is the CPUInt ([25:22]) and PCIInt ([29:26]) bits, which are intended for gen-
erating PCItoCPU and CPUtoPCI interrupts. Set these bits by writing ‘0’ from the interrupt originating
side. Clear these bits by writing ‘0’ from the interrupt destination side. For example, if one of the PCI
agents needs to assert an interrupt to the CPU, it can write ‘0’ to one of the PCIInt bits in the
Main_Cause register. Assuming that this bit is not masked, interrupt0* will be asserted. After servicing
this interrupt the CPU should clear the interrupt bit by writing zero to it.