Interrupts and Exceptions
e200z3 Power Architecture Core Reference Manual, Rev. 2
4-22
Freescale Semiconductor
4.6.16
Debug Interrupt (IVOR15)
The e200z3 implements the debug interrupt as defined in Book E with the following changes:
•
When the debug APU is enabled (HID0[DAPUEN] = 1), debug is no longer a critical interrupt but
uses DSRR0 and DSRR1 for saving machine state on context switch.
•
The Return from Debug Interrupt Instruction (rfdi) supports the debug APU save/restore registers
(DSRR0 and DSRR1).
•
The critical interrupt taken debug event allows critical interrupts to generate a debug event.
•
The critical return debug event allows debug events to be generated for rfci instructions.
Multiple sources can signal a debug exception. A debug interrupt occurs when no higher priority exception
exists, a debug exception is indicated in the debug status register (DBSR), and debug interrupts are enabled
(DBCR0[IDM] = 1 (internal debug mode) and MSR[DE] = 1). Enabling debug events and other debug
modes is discussed in
With the debug APU enabled (see
Section 2.13.1, “Hardware Implementation-Dependent Register 0
), the debug interrupt uses its own set of save/restore registers (DSRR0, DSRR1) to allow
debugging of both critical and non-critical interrupt handlers. This capability also allows interrupts to be
handled while in a debug software handler. External and critical interrupts are not automatically disabled
when a debug interrupt occurs but can be configured to be cleared through HID0[DCLREE,DCLRCE].
See
Section 2.13.1, “Hardware Implementation-Dependent Register 0 (HID0).”
When the debug APU is
disabled, debug interrupts use CSRR0 and CSRR1 to save machine state.
NOTE
For details regarding the following descriptions of debug exception types,
see
Section 9.4, “Software Debug Events and Exceptions
.”
Table 4-24. Debug Exceptions
Exception
Cause
Instruction
address
compare (IAC)
Instruction address compare events are enabled and an instruction address match occurs as defined by the
debug control registers. This could either be a direct instruction address match or a selected set of instruction
addresses. IAC has the highest priority of all instruction-based interrupts, even if the instruction itself
encountered an ITLB error or instruction storage exception.
Branch taken
(BRT)
A branch instruction is considered taken by the branch unit ,and branch taken events are enabled. The debug
interrupt is taken when no higher priority exception is pending.
Data address
compare
(DAC)
Data address compare events are enabled, and a data access address match occurs as defined by the debug
control registers. This could either be a direct data address match, a selected set of data addresses, or a
combination of data address and data value matching. The debug interrupt is taken when no higher priority
exception is pending. The e200z3 does not implement the data value compare debug mode, specified in
Book E. The e200z3 implementation provides IAC linked with DAC exceptions. This results in a DAC exception
only if one or more IAC conditions are also met.
Trap (TRAP)
debug
Program trap exception is generated while trap events are enabled. If MSR[DE] is set, the debug exception has
higher priority than the program exception and is taken instead of a trap type program interrupt. The debug
interrupt is taken when no higher priority exception is pending. If MSR[DE] is cleared when a trap debug
exception occurs, a trap exception type program interrupt is taken instead.