09.12.2012 Views

Cortex-A8 Technical Reference Manual - ARM Information Center

Cortex-A8 Technical Reference Manual - ARM Information Center

Cortex-A8 Technical Reference Manual - ARM Information Center

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Table 12-53 shows the values in the Link Register after exceptions. The <strong>ARM</strong> and Thumb<br />

columns in this table represent the processor state in which the exception occurred.<br />

12.7.1 Effect of debug exceptions on CP15 registers and WFAR<br />

12.7.2 Avoiding unrecoverable states<br />

The four CP15 registers that record abort information are:<br />

• Data Fault Address Register (DFAR)<br />

• Instruction Fault Address Register (IFAR)<br />

• Instruction Fault Status Register (IFSR)<br />

• Data Fault Status Register (DFSR).<br />

See Chapter 3 System Control Coprocessor for more information on these registers.<br />

If the processor takes a debug exception because of a watchpoint debug event, the processor<br />

performs the following actions on these registers:<br />

• it does not change the IFSR or IFAR<br />

• it updates the DFSR with the debug event encoding<br />

• it writes an Unpredictable value to the DFAR<br />

Debug<br />

Table 12-53 Values in Link Register after exceptions<br />

Cause of fault <strong>ARM</strong> Thumb Return address (RA) meaning<br />

Breakpoint RA+4 RA+4 Breakpointed instruction address<br />

Watchpoint RA+8 RA+8 Address of the instruction that triggered the watchpoint event<br />

BKPT instruction RA+4 RA+4 BKPT instruction address<br />

Vector catch RA+4 RA+4 Vector address<br />

Prefetch Abort RA+4 RA+4 Address of the instruction that the prefetch abort event canceled<br />

Data Abort RA+8 RA+8 Address of the instruction that the data abort event canceled<br />

• it updates the WFAR with the address of the instruction that accessed the watchpointed<br />

address, plus a processor state dependent offset:<br />

— + 8 for <strong>ARM</strong> state<br />

— + 4 for Thumb and ThumbEE states.<br />

If the processor takes a debug exception because of a breakpoint, BKPT, or vector catch debug<br />

event, the processor performs the following actions on these registers:<br />

• it updates the IFSR with the debug event encoding<br />

• it writes an Unpredictable value to the IFAR<br />

• it does not change the DFSR, DFAR, or WFAR.<br />

The processor ignores vector catch debug events on the Prefetch or Data Abort vectors while in<br />

Monitor debug-mode because these events put the processor in an unrecoverable state.<br />

The debuggers must avoid other similar cases by following these rules, that apply only if the<br />

processor is in Monitor debug-mode:<br />

• if BCR[22:20] is set to b010, an unlinked context ID breakpoint is selected, then the<br />

debugger must program BCR[2:1] for the same breakpoint as stated in this section<br />

<strong>ARM</strong> DDI 0344K Copyright © 2006-2010 <strong>ARM</strong> Limited. All rights reserved. 12-54<br />

ID060510 Non-Confidential

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!