Debug
ARM DDI 0363G Copyright © 2006-2011 ARM Limited. All rights reserved. 12-42
ID073015 Non-Confidential
12.6 Debug events
A processor responds to a debug event in one of the following ways:
• ignores the debug event
• takes a debug exception
• enters debug state.
This section describes:
• Software debug event
• Halting debug event on page 12-43.
• Behavior of the processor on debug events on page 12-43
• Debug event priority on page 12-43
• Watchpoint debug events on page 12-43.
12.6.1 Software debug event
A software debug event is any of the following:
• A watchpoint debug event. This occurs when:
— The data address for a load or store matches the watchpoint value.
— All the conditions of the DBGWCR match.
— The watchpoint is enabled.
— The linked context ID-holding BRP, if any, is enabled and its value matches the
context ID in CP15 c13. See Chapter 4 System Control.
— The instruction that initiated the memory access is committed for execution.
Watchpoint debug events are only generated if the instruction passes its condition code.
• A breakpoint debug event. This occurs when:
— An instruction was fetched and the instruction address or the CP15 Context ID
register c13 matched the breakpoint value.
— At the same time the instruction was fetched, all the conditions of the DBGBCR for
unlinked context ID breakpoint generation matched the instruction side control
signals.
— The breakpoint is enabled.
— The instruction is committed for execution. These debug events are generated
whether the instruction passes or fails its condition code.
• A BKPT debug event. This occurs when a
BKPT
instruction is committed for execution.
BKPT
is an unconditional instruction.
• A vector catch debug event. This occurs when:
— An instruction was prefetched and the address matched a vector location address.
This includes any kind of prefetch, not only the ones because of exception entry.
— At the same time the instruction was fetched, the corresponding bit of the DBGVCR
was set, that is, the vector catch is enabled.
— The instruction is committed for execution. These debug events are generated
whether the instruction passes or fails its condition code.