Restrictions on VFP usage

The VFP support implements only the RunFast mode of operation:

Note: Both Round-to-nearest and Flush-to-zero are defined in the IEEE754 standard.

This mode of operation doesn't require any software support code. However, it doesn't provide full IEEE754 compliance. For full details about the RunFast mode of operation, see the ARM Architecture Reference Manual, published by ARM.

No software emulation or support code is provided for the VFP instruction set. This means that code using VFP instructions can be run only on a processor that implements VFP hardware. Executing VFP instructions without the presence of VFP hardware will result in a SIGFPE signal.

The standard QNX Neutrino libraries are compiled to use a soft-float implementation for floating-point operations to ensure the code can run on all supported ARM processors.

The soft-float implementation passes floating-point arguments and results in ARM registers, or on the stack. The code that uses VFP instructions for floating point must use the same argument (or result mechanism) to ensure that it can interoperate correctly with code compiled for soft-float.

A VFP-enabled math library, called libm-vfp.so, is provided and can be used on targets that implement VFP hardware in two ways: