kumquat-buildroot/arch
Thomas Petazzoni 5f959a1c61 arch: improve ARM floating point support and add support for EABIhf
This commit introduces the support for the EABIhf ABI, next to the
existing support we have for EABI and OABI (even though OABI support
is deprecated). EABIhf allows to improve performance of floating point
workload by using floating point registers to transfer floating point
arguments when calling functions, instead of using integer registers
to do, as is done in the 'softfp' floating point model of EABI.

In addition to this, this commit introduces a list of options for the
floating point support:
 * Software floating point
 * VFP
 * VFPv3
 * VFPv3-D16
 * VFPv4
 * VFPv4-D16

and it introduces some logic to make sure the options are only visible
when it makes sense, depending on the ARM core being selected. This is
however made complicated by the fact that certain VFP capabilities are
mandatory on some cores, but optional on some other cores. The kconfig
logic tries to achieve the following goals:

 * Hide options that are definitely not possible.

 * Use safe default values (i.e for Cortex-A5 and A7, the presence of
   the VFPv4 unit is optional, so we default on software floating
   point on these cores)..

 * Show the available possibilities, even if some of them are not
   necessarily working on a particular core (again, for the Cortex-A5
   and A7 cores, there is no way of knowing whether the particular
   variant used by the user has VFPv4 or not, so we select software
   floating point by default, but still show VFP/VFPv3/VFPv4 options).

It is worth noting that this commit doesn't add support for all
possible -mfpu= values on ARM. We haven't added support for fpa, fpe2,
fpe3, maverick (those four are only used on very old ARM cores), for
vfpv3-fp16, vfpv3-d16-fp16, vfpv3xd, vfpv3xd-fp16, neon-fp16,
vfpv4-sp-d16. They can be added quite easily if needed thanks to the
new organization of the Config.in options.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-07-16 14:42:12 +02:00
..
Config.in arch: Refactor BR2_SOFT_FLOAT into per-architecture options 2013-07-16 14:35:07 +02:00
Config.in.aarch64
Config.in.arc arc: Add option for ARC-specific download site 2013-05-04 23:03:38 +02:00
Config.in.arm arch: improve ARM floating point support and add support for EABIhf 2013-07-16 14:42:12 +02:00
Config.in.avr32
Config.in.bfin arch: toolchain: Introduce target CPU revision. 2013-05-05 22:49:50 +02:00
Config.in.m68k
Config.in.microblaze
Config.in.mips arch: Refactor BR2_SOFT_FLOAT into per-architecture options 2013-07-16 14:35:07 +02:00
Config.in.powerpc arch: Refactor BR2_SOFT_FLOAT into per-architecture options 2013-07-16 14:35:07 +02:00
Config.in.sh
Config.in.sparc arch/sparc: drop old SUN-specific variants 2013-01-02 14:59:55 +01:00
Config.in.x86 arch: fix BR2_ARCH for generic target variant 2012-12-20 15:15:24 +01:00
Config.in.xtensa xtensa: use uppercase for configurations and modified overlay structure 2012-11-21 11:08:50 +01:00