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

All CP15 CDP, CDP2, LDC, LDC2, MCR2, MCRR, MCRR2, MRC2, MRRC, MRRC2, STC, <strong>and</strong> STC2 instructions are UNDEFINED.<br />

B1.7.2 Access controls on CP0 to CP13<br />

Coprocessors CP0 to CP13 might be required for optional features of the <strong>ARM</strong>v7 implementation. In<br />

particular, CP10 <strong>and</strong> CP11 are used to support floating-point operations through the VFP <strong>and</strong> Advanced<br />

SIMD extensions to the architecture, see Advanced SIMD <strong>and</strong> floating-point support on page B1-64.<br />

Coprocessors CP0 to CP7 can be used to provide IMPLEMENTATION DEFINED vendor specific features.<br />

Access to the coprocessors CP0 to CP13 is controlled by the Coprocessor Access Control Register, see:<br />

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

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

Initially on power up or reset, access to coprocessors CP0 to CP13 is disabled.<br />

When the Security Extensions are implemented, the Non-Secure Access Control Register determines which<br />

of the CP0 to CP13 coprocessors can be accessed from the Non-secure state, see c1, Non-Secure Access<br />

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

Note<br />

When an implementation includes either or both of the VFP <strong>and</strong> Advanced SIMD extensions, the<br />

access settings for CP10 <strong>and</strong> CP11 must be identical. If these settings are not identical the behavior<br />

of the extensions is UNPREDICTABLE.<br />

To check which coprocessors are implemented:<br />

1. If required, read the Coprocessor Access Control Register <strong>and</strong> save the value.<br />

2. Write the value 0x0FFFFFFF to the register, to write 0b11 to the access field for each of the<br />

coprocessors CP13 to CP0.<br />

3. Read the Coprocessor Access Control Register again <strong>and</strong> check the access field for each<br />

coprocessor:<br />

if the access field value is 0b00 the coprocessor is not implemented<br />

if the access field value is 0b11 the coprocessor is implemented.<br />

4. If required, write the value from stage 1 back to the register to restore the original value.<br />

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

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

Saved successfully!

Ooh no, something went wrong!