Symbian3/PDK/Source/GUID-5E358AB4-03A7-5859-ABF2-A8B64B74AF56.dita
changeset 12 80ef3a206772
parent 5 f345bda72bc4
equal deleted inserted replaced
11:5072524fcc79 12:80ef3a206772
     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 &gt; 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>