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.

Common VFP Subarchitecture Specification<br />

The trigger instruction might not be the VFP instruction immediately following the exceptional instruction,<br />

<strong>and</strong> depending on the instruction sequence, the bounce can occur many instructions later. An<br />

implementation can continue to execute some VFP instructions before detecting the exceptional condition,<br />

provided:<br />

these instructions are not themselves exceptional<br />

these instructions are independent of the exceptional instruction<br />

the oper<strong>and</strong>s for the exceptional instruction are still available after the execution of the instructions.<br />

Determination of the trigger instruction<br />

VMSR <strong>and</strong> VMRS instructions that access the FPEXC, FPSID, FPINST or FPINST2 registers do not trigger<br />

exception processing.<br />

These system registers are not used in normal VFP application code, but are designed for use by support<br />

code <strong>and</strong> the operating system. Accesses to these registers do not bounce when the processor is in an<br />

asynchronous exceptional state, indicated by FPEXC.EX == 1. This means the support code can read<br />

information out of these registers, before clearing the exceptional condition by setting FPEXC.EX to 0.<br />

All other VFP instructions, including VMSR <strong>and</strong> VMRS instructions that access the FPSCR, trigger exception<br />

processing if there is an outst<strong>and</strong>ing exceptional condition. For more information, see VFP support code on<br />

page B1-70.<br />

Exception processing for scalar instructions<br />

When an exceptional condition is detected in a scalar CDP instruction:<br />

the exception-generating instruction is copied to the FPINST Register, see The Floating-Point<br />

Instruction Registers, FPINST <strong>and</strong> FPINST2 on page AppxB-20<br />

the FPEXC.VECITR field is set to 0b111 to indicate that no short vector iterations are required<br />

the FPEXC.EX bit is set to 1<br />

all the oper<strong>and</strong> registers to the instruction are restored to their original values, so that the instruction<br />

can be re-executed in support code<br />

If the execution of the instruction would set the cumulative exception flags for any exception,<br />

hardware might or might not set these flags.<br />

Note<br />

Because the cumulative exception flags are cumulative, it is always acceptable for the support code<br />

to set the exception flags to 1 as a result of emulating the instruction, even if the hardware has set<br />

them.<br />

If there is a bypassed instruction then this is copied to the FPINST2 Register, <strong>and</strong> the FPEXC.FP2V bit is<br />

set to 1.<br />

The next VFP instruction issued becomes the trigger instruction <strong>and</strong> causes entry to the operating system.<br />

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

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

Saved successfully!

Ooh no, something went wrong!