BCM1250/BCM1125/BCM1125H
User Manual
10/21/02
B r o a d c o m C o r p o r a t i o n
Page
50
Section 4: System Control and Debug Unit
Document
1250_1125-UM100CB-R
HyperTransport interrupt messages specify if the source is edge or level sensitive. Edge sensitive interrupts
do not need to be acknowledged, and it is source dependent whether the CPU has to take action before further
interrupts can be signalled. Level interrupts require the CPU to send an EOI message to acknowledge the
servicing of the request. The interrupt source device will wait until an EOI is received before issuing any further
interrupts. In the MIPS architecture the CPU does not produce a signal to indicate EOI. Software must do a
write to the EOI space at the end of the interrupt service routine (see
Section: “HyperTransport End Of Interrupt
(EOI) Signaling Space” on page 198
). Since the HyperTransport specification requires that edge and level
interrupts are not reported with the same source vector ID, software will know from the vector number that an
EOI is needed. The access to the EOI space must be a write, so the CPU is not stalled while the request is
issued. (Reads to EOI space have UNDEFINED results.)
Interrupts from a PC style PIC interrupt controller are signaled using the External Interrupt message, which has
no additional source information associated with it. The PIC will provide an 8-bit source vector in response to
an interrupt acknowledge (IACK) cycle. On the BCM1250 and BCM1125H software is responsible for running
the IACK cycle by performing a byte read within the reserved IACK range as described in
Interrupt Acknowledge (IACK) Space” on page 199
. A read to this address range gets routed to the
southbridge. If the southbridge is a native HyperTransport device, then this command packet will be routed
directly to the southbridge. If the southbridge is connected to a PCI device bridged from the HyperTransport
then the command packet will be routed to the intervening HyperTransport-PCI bridge. (If the southbridge is
on the PCI interface (set by the southOnLDT configuration bit being clear) the IACK access will be run as a
PCI IACK cycle, but in that case the interrupt would not have come in as a HyperTransport External Interrupt
message.)
T
HE
F
ULL
I
NTERRUPT
M
APPER
The full interrupt controller is illustrated in
. This shows the mailbox and HyperTransport
sources and all the mapper registers.
The system sources and the mailbox interrupts come into the
interrupt_source_status
register. They are
combined with the HyperTransport interrupts and the data in the
interrupt_diag
register. This is a read/write
register that the CPU can use to activate interrupt request lines. It is primarily used to allow testing of the
interrupt routing by simulating device interrupts.
The
interrupt_ldt
register bits are set by the HyperTransport interrupt controller as described in the previous
section. The register is read by the CPU to determine the HyperTransport interrupt source and cleared by a
write to the
ldt_interrupt_clear
register.
The
interrupt_mask
register is used to block interrupts. Masking is done after the three sources (system,
HyperTransport and diagnostic) have been combined, if interrupt lines are shared either all sources are
masked off or none. All unmasked interrupts are passed to the interrupt mapper. This has a 3 bit Map register
for each of the sources which maps the source to one of the CPU interrupt lines (regular INT[5:0], NMI or
DINT). Each source can be mapped to only one CPU line, but each CPU line can have any number of sources.
The regular interrupt signals to the CPU and DINT are level sensitive and will continue to be asserted as long
as there are interrupting sources. The NMI is edge triggered and will be asserted for a single cycle whenever
the mapper output asserts (i.e. after an NMI all interrupting sources must be clear for at least a cycle before a
subsequent NMI will be generated).