Adaptation/GUID-5E358AB4-03A7-5859-ABF2-A8B64B74AF56.dita
changeset 15 307f4279f433
equal deleted inserted replaced
14:578be2adaf3e 15:307f4279f433
       
     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 &gt; 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>