The Linux kernel is having to remove support for NWFPE and VFP emulation code due to a licensing conflict. Removing NWFPE and VFP from the kernel will effectively render older ARM hardware on Linux useless until a solution is determined.
Russell King, the maintainer of the ARM code for the Linux kernel, announced this removal on the linux-arm-kernel
mailing list. The NWFPE (NetWinder Floating Point Emulator) and VFP (Vector Floating Point) code is for emulating floating-point operations within the kernel. While this code is critical to ARM hardware without hardware floating-point support, the code needs to be dropped due to a licensing conflict.
It turns out that the softfloat library used by NWFPE and VFP is incompatible with the GPLv2 license, for which the Linux kernel is licensed. The softfloat library has an indemnification clause, which the Free Software Foundation considers to be an "additional restriction" and thereby renders it incompatible with the GPLv2.
The Softfloat library either needs to be re-licensed without the indemnification clause, a clean-room GPLv2-compatible Softfloat library needs to be written not based upon the current code, or some alternative plan needs to be devised.
Russel King admits, "This will be very disruptive for ARMv4 and ARMv5 CPUs, which will no longer be able to run userspace with NWFPE support removed...The situation with VFP is likely less disruptive - only instructions which aren't implemented in hardware (or, for example, if you ask for inexact exceptions to be enabled) which are bounced to the software support code will be affected. I think OMAP should get away unscathed, but ARM's implementation will bounce if inexact exceptions are enabled or in a few corner cases. Qualcomm is likely to be the worst affected by this."
Those wanting more details on the Softfloat library can visit its web-page