EasyManua.ls Logo

ARM ARM1176JZF-S - Table 13-23 Setting of CP15 Registers on Debug Events

Default Icon
759 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Debug
ARM DDI 0301H Copyright © 2004-2009 ARM Limited. All rights reserved. 13-34
ID012310 Non-Confidential, Unrestricted Access
13.8.5 Effect of a debug event on CP15 registers
The four CP15 registers that can be set on a debug event are:
Instruction Fault Status Register (IFSR)
Data Fault Status Register (DFSR)
Fault Address Register (FAR)
Watchpoint Fault Address Register (WFAR).
The Instruction Fault Address Register (IFAR) is never updated on debug events.
The registers are set under the following circumstances:
The IFSR is set whenever a breakpoint, software breakpoint, or vector catch debug event
generates a Debug exception entry. It is set to indicate the cause for the Prefetch Abort
vector fetch.
The DFSR is set whenever a watchpoint debug event generates a Debug exception entry.
It is set to indicate the cause for the Data Abort vector fetch.
The processor updates the FAR on debug exception entry because of watchpoints,
although this is architecturally Unpredictable. It is set to the Modified Virtual Address
(MVA) that triggered the watchpoint.
The WFAR is set whenever a watchpoint debug event generates either a Debug exception
or Debug state entry. It is set to the VA of the instruction that caused the Watchpoint debug
event, plus an offset dependent on the processor state. These offsets are the same as the
ones that Table 13-25 on page 13-39 lists.
Table 13-23 lists the setting of CP15 registers on debug events.
You must take care when setting a breakpoint or software breakpoint debug event inside the
Prefetch Abort or Data Abort exception handlers, or when setting a watchpoint debug event on
a data address that might be accessed by any of these handlers. These debug events overwrite
the R14_abt, SPRS_abt and the CP15 registers listed in this section, leading to an unpredictable
software behavior if the handlers did not have the chance of saving the registers.
Table 13-23 Setting of CP15 registers on debug events
Register
Debug exception taken because of: Debug state entry because of:
A breakpoint,
software breakpoint,
or vector catch
debug event
A watchpoint
debug event
A debug event
other than a
watchpoint
A watchpoint
debug event
IFSR Cause of Prefetch Abort
exception handler entry
Unchanged Unchanged Unchanged
DFSR Unchanged Cause of Data Abort
exception handler entry
Unchanged Unchanged
FAR Unchanged Watchpointed address Unchanged Unchanged
WFAR Unchanged Address of the
instruction causing the
watchpoint debug event
Unchanged Address of the
instruction causing the
watchpoint debug
event

Table of Contents

Related product manuals