The purpose of the Data Fault Address Register (DFAR) is to hold the Modified Virtual Address (MVA) of the fault when a precise abort occurs.
The DFAR is:
a read/write register banked for Secure and Nonsecure states
accessible in privileged modes only.
The Data Fault Address Register bits [31:0] contain the MVA where the precise abort occurred.
Table 3.71 shows the results of attempted access for each mode.
|Secure privileged||Nonsecure privileged||Secure User||Nonsecure User|
|Secure data||Secure data||Nonsecure data||Nonsecure data||Undefined||Undefined||Undefined||Undefined|
 An entry of Undefined in the table means that the access gives an Undefined Instruction exception when the coprocessor instruction is executed.
To access the DFAR, read or write CP15 with:
MRC p15, 0, <Rd>, c6, c0, 0 ; Read Data Fault Address Register
MCR p15, 0, <Rd>, c6, c0, 0 ; Write Data Fault Address Register
A write to this register sets the DFAR to the value of the data written. This is useful for a debugger to restore the value of the DFAR.
The processor also updates the DFAR on debug exception entry because of watchpoints. See Effect of debug exceptions on CP15 registers and WFAR for more information.