So I've had a number of conversations with Dennis Gilmore and folks from
other ARM disro ports about v7 support, and particularly with respect to
hardware math. (In addition, one of the Seneca students is currently
investigating v5 vs. v7 support in an attempt to figure out how much of
the Fedora universe needs to be recompiled for optimal benefit).
Regarding hardfp, though, things are quite unclear. My understanding of
soft/softfp/hardfp was initially wrong. As I understand it now:
- soft does all the math in software. Function values are passed in CPU
registers where appropriate.
- softfp enables the use of FPU instructions, but continues to pass
function arguments in CPU registers. This mode enables hardware
acceleration of math and interoperability with soft, at the cost of a
CPU->FPU register move in some cases.
- hardfp enables the use of FPU instructions, and function values are
passed in FPU registers where appropriate. This mode is incompatible
with soft and softfp, and cannot be used on CPUs that have an FPU.
According to gcc (docs + error messages), it is also incompatible with
CPUs that use a "vfp" math unit, such as OMAP3xxx CPUs (BeagleBoard) and
(I think) the CPU used in the XO1.75. I'm unclear on which hardware math
units it is compatible with.
In terms of hardware support, I think we definitely want to continue to
support armv5tel with software floating-point, since that's what is used
on many current Marvell CPUs, including those used in the
hardfp would break compatibility with all of the existing binary
packages, and hardfp can't be compiled by gcc for any of the CPUs I have
got my hands on so far.
Thus, I recommend that we aim at armv7l softfp to support as an arch