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 />

B1.8 Advanced SIMD <strong>and</strong> floating-point support<br />

Advanced SIMD <strong>and</strong> VFP extensions on page A2-20 introduces:<br />

the VFP extension, used for scalar floating-point operations<br />

the Advanced SIMD extension, used for integer <strong>and</strong> floating-point vector operations<br />

the Advanced SIMD <strong>and</strong> VFP extension registers D0 - D31 <strong>and</strong> their alternative views as S0 - S31<br />

<strong>and</strong> Q0 - Q15<br />

the Floating-Point Status <strong>and</strong> Control Register (FPSCR).<br />

For more information about the system registers for the Advanced SIMD <strong>and</strong> VFP extensions see Advanced<br />

SIMD <strong>and</strong> VFP extension system registers on page B1-66.<br />

Software can interrogate the registers described in Advanced SIMD <strong>and</strong> VFP feature identification registers<br />

on page B5-34 to discover the Advanced SIMD <strong>and</strong> floating-point support implemented in a system.<br />

This section gives more information about the Advanced SIMD <strong>and</strong> VFP extensions, in the subsections:<br />

Enabling Advanced SIMD <strong>and</strong> floating-point support<br />

Advanced SIMD <strong>and</strong> VFP extension system registers on page B1-66<br />

The Floating-Point Exception Register (FPEXC) on page B1-68<br />

Context switching with the Advanced SIMD <strong>and</strong> VFP extensions on page B1-69<br />

VFP support code on page B1-70<br />

VFP subarchitecture support on page B1-72.<br />

B1.8.1 Enabling Advanced SIMD <strong>and</strong> floating-point support<br />

If an <strong>ARM</strong>v7 implementation includes support for any Advanced SIMD or VFP features then the boot<br />

software for any system that uses that implementation must ensure that:<br />

access to CP10 <strong>and</strong> CP11 is enabled in the Coprocessor Access Control Register, see:<br />

— c1, Coprocessor Access Control Register (CPACR) on page B3-104 for a VMSA<br />

implementation<br />

— c1, Coprocessor Access Control Register (CPACR) on page B4-51 for a PMSA<br />

implementation.<br />

if the Security Extensions are implemented <strong>and</strong> Non-secure access to the Advanced SIMD or VFP<br />

features is required, the access flags for CP10 <strong>and</strong> CP11 in the NSACR must be set to 1, see c1,<br />

Non-Secure Access Control Register (NSACR) on page B3-110.<br />

If this is not done, operation of Advanced SIMD <strong>and</strong> VFP features is UNDEFINED.<br />

If the access control bits are programmed differently for CP10 <strong>and</strong> CP11, operation of Advanced SIMD <strong>and</strong><br />

VFP features is UNPREDICTABLE.<br />

In addition, software must set the FPEXC.EN bit to 1 to enable most Advanced SIMD <strong>and</strong> VFP operations,<br />

see The Floating-Point Exception Register (FPEXC) on page B1-68.<br />

B1-64 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!