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
48
Section 4: System Control and Debug Unit
Document
1250_1125-UM100CB-R
To assist software dispatch there are status registers associated with each of the six CPU interrupt lines, DINT
and the NMI. These indicate which sources are interrupting, pass the mask and are routed to this interrupt line.
In addition there is a global status register that shows which sources are interrupting regardless of their mask
setting or routing.
The debug interrupt (DINT) to the CPU may be raised by the interrupt mapper. It will also be raised if a trace
trigger is marked to send DINT (see
Section: “Trigger Sequences” on page 73
) or if the break control bit is set
in the EJTAG control register (see
Section: “EJTAG Control Register” on page 440
There is a diagnostic register built into the interrupt mapper that can be used to force interrupts to be asserted
into the mask and map logic.
Since there is a full copy of the mapper for each CPU, system interrupts may be masked and mapped
differently on the two processors. In many cases a particular source would always be assigned to a particular
processor, delivering it to both requires software to coordinate servicing the interrupt.
H
YPER
T
RANSPORT
I
NTERRUPTS
The HyperTransport bus protocol includes passing interrupt messages across the HyperTransport fabric.
These messages include identification of the interrupt vector (as described below there are some non-vectored
interrupts, carrying meanings specific to the x86 architecture, but these are thought of as having an implicit
vector number in the interrupt mapper). The MIPS architecture does not directly support hardware interrupt
vectoring, so the vector number is used by the hardware to decide which input to the interrupt mapper will be
triggered and software can do any required vectoring.
The interrupt packet also includes a destination. This is either a physical processor number or "a system
specific logical mapping". The BCM1250 CPUs (and their related interrupt controllers) are physically numbered
0 and 1. The BCM1125H CPU (and interrupt controller) is physical number 0. The logical mapping used is the
example one from the HyperTransport specification, a processor is selected as the target by setting the bit
position corresponding to its physical processor number. This scheme allows for up to eight processors. Use
of the logical mapping allows broadcast and multicast interrupts (having only two CPUs, these amount to the
same thing on the BCM1250). The mapper supports the 8 bit destination from the HyperTransport
Specification rev 1.0 and earlier, and will ignore the additional 24 destination bits added by the HyperTransport
Specification rev 1.01.
The HyperTransport interrupt messages must maintain ordering with transactions that come across the
HyperTransport link ahead of them. They therefore follow the same flow as other HyperTransport transactions
and are delivered to the SCD across the ZBbus as writes to the
interrupt_ldt_set
register. Writes to this
register are decoded and used to set bits in either the
mailbox
register or the
interrupt_ldt
register. The CPU
can write the
interrupt_ldt_set
register during testing to simulate the arrival of an interrupt message. The data
written is a 64-bit double-word containing the data from the HyperTransport Interrupt message as described in