|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-5E358AB4-03A7-5859-ABF2-A8B64B74AF56" xml:lang="en"><title>Vector Floating Point Architecture (VFP)</title><shortdesc>Describes the implementation of the ARM Vector Floating |
|
13 Point Architecture (VFPv2) on Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
14 <p>ARM provide a hardware floating point coprocessor that provides |
|
15 floating point computation that is fully compliant with IEEE Std 754-1985.We |
|
16 refer to the coprocessor as the <i>VFP unit</i>. </p> |
|
17 <p>Symbian platform supports the use of VFPv2 on platforms where the |
|
18 required hardware is present in both <i>RunFast</i> mode and in <i>IEEE-without-exceptions</i> mode. See ARM's Vector Floating-point |
|
19 Coprocessor Technical reference Manual for more details on the coprocessor, |
|
20 its architecture, and its execution modes. </p> |
|
21 <p>You should read Floating point support in Symbian^3 Tools Guide |
|
22 > Building. The guide contains information about applications |
|
23 and user-side code, which is also applicable to code running on the |
|
24 kernel side. However there are a number of restrictions that must |
|
25 be observed: </p> |
|
26 <ul> |
|
27 <li id="GUID-2205026D-0E6F-54AE-B74F-5478D6047B70"><p>You <i>cannot</i> use VFP instructions in any interrupt service routine. </p> </li> |
|
28 <li id="GUID-C8D896E1-CF36-52CD-A984-61D7A8189268"><p>You <i>cannot</i> use VFP instructions when the kernel is locked, for example, in |
|
29 an IDFC or after calling <xref href="GUID-3A3C08F3-3D33-3D9E-80E7-7855C7B21E02.dita#GUID-3A3C08F3-3D33-3D9E-80E7-7855C7B21E02/GUID-7CBBF72B-4519-38DD-92CA-38AF636AFD8A"><apiname>NKern::Lock()</apiname></xref> </p> </li> |
|
30 <li id="GUID-A7466A83-A8F2-58CE-AB8B-E05607BB6D95"><p>You <i>cannot</i> use VFP instructions in any section of code which runs with a fast |
|
31 mutex held. </p> </li> |
|
32 </ul> |
|
33 <p>Using VFP instructions in these situations can lead to data being |
|
34 corrupted, or the kernel panicking. If you rely on the compiler to |
|
35 generate VFP instructions, rather than using inline assembler, it |
|
36 is extremely important that you do not use any floating point values |
|
37 in these situations. The compiler may generate VFP instructions for |
|
38 the most trivial floating point operations and even for simple assignments. </p> |
|
39 </conbody></concept> |