9: Debugging Your System
ARM720T CORE CPU MANUAL EPSON 9-43
9.26 Coupling breakpoints and watchpoints
You can couple watchpoint units 1 and 0 together using the CHAIN and RANGE inputs. The
use of CHAIN enables Watchpoint 0 to be triggered only if Watchpoint 1 has previously
matched. The use of RANGE enables simple range checking to be performed by combining the
outputs of both watchpoints.

9.26.1 Breakpoint and watchpoint coupling example

Let:
Av[31:0] Be the value in the address value register
Am[31:0] Be the value in the address mask register
A[31:0] Be the address bus from the ARM720T processor
Dv[31:0] Be the value in the data value register
Dm[31:0] Be the value in the data mask register
D[31:0] Be the data bus from the ARM720T processor
Cv[8:0] Be the value in the control value register
Cm[7:0] Be the value in the control mask register
C[9:0] Be the combined control bus from the ARM720T core, other
watchpoint registers, and the DBGEXT signal.
CHAINOUT signal
The CHAINOUT signal is derived as follows:
WHEN (({Av[31:0],Cv[4:0]} XNOR {A[31:0],C[4:0]}) OR {Am[31:0],Cm[4:0]} == 0xFFFFFFFFF)
CHAINOUT = ((({Dv[31:0],Cv[6:4]} XNOR {D[31:0],C[7:5]}) OR {Dm[31:0],Cm[7:5]}) ==
0x7FFFFFFFF)
The CHAINOUT output of watchpoint register 1 provides the CHAIN input to Watchpoint 0.
This CHAIN input enables you to use quite complicated configurations of breakpoints and
watchpoints.
Note: There is no CHAIN input to Watchpoint 1 and no CHAIN output from Watchpoint
0.
For example, consider the request by a debugger to breakpoint on the instruction at location
YYY when running process XXX in a multiprocess system. If the current process ID is stored
in memory, you can implement the above function with a watchpoint and breakpoint chained
together. The watchpoint address points to a known memory location containing the current
process ID, the watchpoint data points to the required process ID and the ENABLE bit is
cleared.
The address comparator output of the watchpoint is used to drive the write enable for the
CHAINOUT latch. The input to the latch is the output of the data comparator from the same
watchpoint. The output of the latch drives the CHAIN input of the breakpoint comparator. The
address YYY is stored in the breakpoint register, and when the CHAIN input is asserted, the
breakpoint address matches and the breakpoint triggers correctly.