05.02.2013 Views

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

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.

The System Level Programmers’ Model<br />

The LR value on entry to the interrupt h<strong>and</strong>ler must be (address of the current bytecode<br />

instruction) + 4.<br />

Corrective action is taken either:<br />

— directly by the Jazelle extension hardware<br />

— indirectly, by calling a SUBARCHITECTURE DEFINED h<strong>and</strong>ler in the EJVM.<br />

The corrective action must re-create a situation where the bytecode instruction can be re-executed<br />

from its start.<br />

The LR value on entry to the interrupt h<strong>and</strong>ler must be (address of the interrupted bytecode<br />

instruction) + 4.<br />

Data Abort exceptions<br />

On taking a Data Abort exception, the value saved in LR_abt must ensure that the Data Abort h<strong>and</strong>ler can:<br />

read the CP15 Fault Status <strong>and</strong> Fault Address registers<br />

fix the reason for the abort<br />

return using SUBS PC,LR,#8 or its equivalent.<br />

The abort h<strong>and</strong>ler must be able to do this without looking at the instruction that caused the abort or which<br />

instruction set state it was executed in. On an <strong>ARM</strong>v7-A implementation, the abort h<strong>and</strong>ler must take<br />

account of the virtual memory system.<br />

Note<br />

This assumes that the intention is to return to <strong>and</strong> retry the bytecode instruction that caused the Data<br />

Abort exception. If the intention is instead to return to the bytecode instruction after the one that<br />

caused the abort, then the return address must be modified by the length of the bytecode instruction<br />

that caused the abort.<br />

For details of the CP15 Fault Status <strong>and</strong> Fault Address:<br />

— for a VMSA implementation, see CP15 c5, Fault status registers on page B3-121 <strong>and</strong> CP15<br />

c6, Fault Address registers on page B3-124<br />

— for a PMSA implementation, see CP15 c5, Fault status registers on page B4-54 <strong>and</strong> CP15 c6,<br />

Fault Address registers on page B4-57.<br />

To enable the st<strong>and</strong>ard mechanism for h<strong>and</strong>ling Data Abort exceptions to work correctly, a Jazelle hardware<br />

implementation must ensure that one of the following applies at any point where a bytecode instruction can<br />

generate a Data Abort exception:<br />

The sequence of operations performed from the start of execution of the bytecode instruction, up to<br />

the point where the Data Abort exception is generated, is idempotent. This means that the sequence<br />

can be repeated from its start without changing the overall result of executing the bytecode<br />

instruction.<br />

If the Data Abort exception is generated during execution of a bytecode instruction, corrective action<br />

is taken either:<br />

— directly by the Jazelle extension hardware<br />

<strong>ARM</strong> DDI 0406B Copyright © 1996-1998, 2000, 2004-2008 <strong>ARM</strong> Limited. All rights reserved. B1-75

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

Saved successfully!

Ooh no, something went wrong!