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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Common VFP Subarchitecture Specification<br />

B.3.3 VFP Access Permission faults<br />

When the VFP register bank is disabled by disabling coprocessors 10 <strong>and</strong> 11 in a coprocessor access control<br />

register, any attempt to use a VFP instruction will bounce. When the VFP register bank is disabled by<br />

clearing the FPEXC.EN bit to 0, any attempt to access a VFP registers, except the FPEXC or FPINST<br />

register, will bounce.<br />

In a system where the VFP can be disabled, h<strong>and</strong>ler code must check that the VFP is enabled before<br />

processing a VFP exception.<br />

B.3.4 Unallocated VFP instruction encodings<br />

Unallocated VFP instruction encodings are those coprocessor 10 <strong>and</strong> 11 instruction encodings that are not<br />

allocated for VFP instructions by <strong>ARM</strong>.<br />

An unallocated VFP instruction encoding bounces synchronously to the VFP Undefined Instruction h<strong>and</strong>ler<br />

code. In this case the VFP state is not modified, the FPEXC.EX bit is set to 0, <strong>and</strong> the FPEXC.DEX bit is<br />

set to 0. Unallocated instruction exception h<strong>and</strong>ling is synchronous.<br />

The VFP exception h<strong>and</strong>ler code can check the FPEXC.EX bit, to find out if the VFP is using asynchronous<br />

exception h<strong>and</strong>ling to h<strong>and</strong>le a previous exceptional condition.<br />

If FPEXC.EX=1, the support code is called to process a previous exceptional instruction. On return from<br />

the support code the trigger instruction is reissued, <strong>and</strong> if the trigger instruction is an unallocated instruction<br />

the Undefined Instruction h<strong>and</strong>ler is re-entered, with FPEXC.EX=0.<br />

If FPEXC.EN == 1, FPEXC.EX == 0 <strong>and</strong> FPEXC.DEX == 0, the h<strong>and</strong>ler code might have been called as a<br />

result of an unallocated instruction encoding or as a result of an allocated instruction encoding which has<br />

not been implemented:<br />

If the instruction is not a CDP instruction, the instruction is an unallocated instruction encoding <strong>and</strong><br />

execution can jump to the unallocated instructions h<strong>and</strong>ler provided by the system.<br />

If the instruction is a CDP instruction, the support code must identify whether the instruction is one<br />

that it can h<strong>and</strong>le. If it is not, then execution can jump to the unallocated instructions h<strong>and</strong>ler provided<br />

by the system.<br />

B.3.5 Trapped floating-point exception h<strong>and</strong>ling<br />

Trapped floating-point exceptions are never h<strong>and</strong>led by hardware. When a trapped exception is detected by<br />

hardware the exception-generating instruction must be re-executed by the support code. The support code<br />

must re-detect <strong>and</strong> signal the exception.<br />

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

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

Saved successfully!

Ooh no, something went wrong!