
Debug in depth
ARM DDI 0165B
Copyright 2000 ARM Limited. All rights reserved.
C-41
C.13
Coupling breakpoints and watchpoints
You can couple watchpoint units 1 and 0 together using the CHAIN and RANGE
inputs. Using CHAIN enables Watchpoint 0 to be triggered only if Watchpoint 1 has
previously matched. Using RANGE enables you to perform simple range checking by
combining the outputs of both watchpoints.
C.13.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 IA bus from the ARM9E-S if control register bit 3 is clear, or the
DA bus from the ARM9E-S if control register bit 3 is set
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 INSTR bus from the ARM9E-S if control register bit 3 is clear, or
the RDATA bus from the ARM9E-S if control register bit 3 is set and the
processor is doing a read, or the WDATA bus from the ARM9E-S if
control register bit 3 is set and the processor is doing a write
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 ARM9E-S, other watchpoint
registers, and the DBGEXT signal.
CHAINOUT signal
The CHAINOUT signal is derived as follows:
WHEN (({Av[31:0],Cv[4,2:0]} XNOR {A[31:0],C[4,2: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 allows for quite complicated configurations of
breakpoints and watchpoints.
Note
There is no CHAIN input to Watchpoint 1 and no CHAIN output from Watchpoint 0.