| |||
| Home > Debug Support > Debug interface signals > Breakpoints and exceptions | |||
A breakpointed instruction can have a Prefetch Abort associated with it. If so, the Prefetch Abort takes priority and the breakpoint is ignored. This is because, if there is a Prefetch Abort, instruction data might be invalid, the breakpoint might have been data-dependent, and as the data might be incorrect, the breakpoint might have been triggered incorrectly.
SWI and undefined instructions are treated
in the same way as any other instruction that might have a breakpoint
set on it. Therefore, the breakpoint takes priority over the SWI or
undefined instruction.
On an instruction boundary, if there is a breakpointed instruction and an interrupt (nIRQ or nFIQ), the interrupt is taken and the breakpointed instruction is discarded. When the interrupt has been serviced, the execution flow is returned to the original program. Where the previously breakpointed instruction is fetched again, and if the breakpoint is still set, the processor enters debug state when the instruction reaches the Execute stage of the pipeline.
When the processor has entered halt mode debug state, it is important that additional interrupts do not affect the instructions executed. For this reason, as soon as the processor enters halt mode, interrupts are disabled, although the state of the I and F bits in the Program Status Register (PSR) are not affected