You copied the Doc URL to your clipboard.

13.3.10. CP14 c96-c97, Watchpoint Value Registers (WVR)

The purpose of the Watchpoint Value Registers (WVRs) is to hold a DVA value that is to be used as a breakpoint for debugging purposes.

The WVRs are:

  • in CP14 c96?-?c97

  • two 32-bit read-write registers

  • only accessible in privileged mode, with debug monitor mode enabled.

The WVRs can only be used in conjunction with the Watchpoint Control Registers (WCRs), see CP14 c112-c113, Watchpoint Control Registers (WCR). Each WVR is associated with a WCR, to form a Watchpoint Register Pair (WRP). This pairing is described in Overview of breakpoint and watchpoint registers on the ARM1136JF-S processor.

Figure 13.11 shows the arrangement of bits in the registers.

Figure 13.11. Watchpoint Value Registers format

Figure 13.11. Watchpoint Value Registers format

Table 13.22 shows the bit functions of the Watchpoint Value Registers.

Watchpoint Value Registers, bit field definitions
Bit rangeAttributesFunction
[31:2]RWWatchpoint address (DVA)
[1:0]-Reserved, UNP/SBZP

Because a WVR can only be used as part of a WRP, use of the WVRs is described in CP14 c112-c113, Watchpoint Control Registers (WCR).

Accessing the Watchpoint Value Registers

Table 13.23 shows the results of attempted accesses to the Watchpoint Value Registers for each mode.

Results of accesses to the Watchpoint Value Registers
Privileged read,[1] DSCR[15:14][2]=b10Privileged write,[1] DSCR[15:14][2]=b10Privileged read or write, DSCR[15:14][2]?!=b10User read or write
Data readData writeUndefined exceptionUndefined exception

[1] These accesses are also possible when the processor is in debug state.

[2] Bits[15:14] of the DSCR register, see CP14 c1, Debug Status and Control Register (DSCR). Setting these bits to b10 enables debug monitor mode.

To access the Watchpoint Value Registers you read or write CP14 with:

  • Opcode_1 set to 0

  • CRn set to c0

  • CRm set to the number of the WVR you want to access, either b0000 for WVR0 or b0001 for WVR1

  • Opcode_2 set to 6.

For example:

MRC p14, 0, <Rd>, c0, 1, 6               ; Read Watchpoint Value Register 1
MCR p14, 0, <Rd>, c0, 0, 6               ; Write Watchpoint Value Register 0