7 Nokia Corporation - initial contribution. |
7 Nokia Corporation - initial contribution. |
8 Contributors: |
8 Contributors: |
9 --> |
9 --> |
10 <!DOCTYPE concept |
10 <!DOCTYPE concept |
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
12 <concept id="GUID-5E358AB4-03A7-5859-ABF2-A8B64B74AF56" xml:lang="en"><title>Vector |
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 Floating Point Architecture (VFP)</title><shortdesc>Describes the implementation of the ARM Vector Floating Point Architecture |
13 Point Architecture (VFPv2) on Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
14 (VFPv2) on Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
14 <p>ARM provide a hardware floating point coprocessor that provides |
15 <p>ARM provide a hardware floating point coprocessor that provides floating |
15 floating point computation that is fully compliant with IEEE Std 754-1985.We |
16 point computation that is fully compliant with IEEE Std 754-1985.We refer |
16 refer to the coprocessor as the <i>VFP unit</i>. </p> |
17 to the coprocessor as the <i>VFP unit</i>. </p> |
17 <p>Symbian platform supports the use of VFPv2 on platforms where the |
18 <p>Symbian platform supports the use of VFPv2 on platforms where the required |
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 hardware is present in both <i>RunFast</i> mode and in <i>IEEE-without-exceptions</i> mode. |
19 Coprocessor Technical reference Manual for more details on the coprocessor, |
20 See ARM's Vector Floating-point Coprocessor Technical reference Manual for |
20 its architecture, and its execution modes. </p> |
21 more details on the coprocessor, its architecture, and its execution modes. </p> |
21 <p>You should read Floating point support in Symbian^3 Tools Guide |
22 <p>You should read the information in <xref href="GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita">Floating |
22 > Building. The guide contains information about applications and |
23 point support</xref> about applications and user side code as this is also |
23 user-side code, which is also applicable to code running |
24 applicable to code running on the kernel side. However there are a number |
24 on the kernel side. However there are a number of restrictions that |
25 of restrictions that must be observed: </p> |
25 must be observed: </p> |
26 <ul> |
26 <ul> |
27 <li id="GUID-2205026D-0E6F-54AE-B74F-5478D6047B70"><p>You <i>cannot</i> use |
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 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 <li id="GUID-C8D896E1-CF36-52CD-A984-61D7A8189268"><p>You <i>cannot</i> use |
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 VFP instructions when the kernel is locked, for example, in an IDFC or after |
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 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> |
31 mutex held. </p> </li> |
32 <li id="GUID-A7466A83-A8F2-58CE-AB8B-E05607BB6D95"><p>You <i>cannot</i> use |
|
33 VFP instructions in any section of code which runs with a fast mutex held. </p> </li> |
|
34 </ul> |
32 </ul> |
35 <p>Using VFP instructions in these situations can lead to data being corrupted, |
33 <p>Using VFP instructions in these situations can lead to data being |
36 or the kernel panicking. If you rely on the compiler to generate VFP instructions, |
34 corrupted, or the kernel panicking. If you rely on the compiler to |
37 rather than using inline assembler, it is extremely important that you do |
35 generate VFP instructions, rather than using inline assembler, it |
38 not use any floating point values in these situations. The compiler may generate |
36 is extremely important that you do not use any floating point values |
39 VFP instructions for the most trivial floating point operations and even for |
37 in these situations. The compiler may generate VFP instructions for |
40 simple assignments. </p> |
38 the most trivial floating point operations and even for simple assignments. </p> |
41 </conbody></concept> |
39 </conbody></concept> |