arch/Config.in.arm: add FPU related options for ARMv8 cores
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 30 Nov 2016 21:12:08 +0000 (22:12 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 5 Dec 2016 22:07:10 +0000 (23:07 +0100)
The ARMv8 cores have a mandatory FPU unit called FP-ARMv8, so we:

 - add a new hidden Config.in option for the availability of this
   unit (BR2_ARM_CPU_HAS_FP_ARMV8)

 - allow the selection of a possible choice in the "Floating point
   strategy", and add two new choices: BR2_ARM_FPU_FP_ARMV8 and
   BR2_ARM_FPU_NEON_FP_ARMV8.

 - specify the -mfpu values for BR2_ARM_FPU_FP_ARMV8 and
   BR2_ARM_FPU_NEON_FP_ARMV8 cases, when used on ARM 32 bits (-mfpu
   doesn't exist on ARM64, instead -mcpu modifiers are used, so they
   will be added on a per-core basis).

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[yann.morin.1998@free.fr: drop the FP strategy dependency]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
arch/Config.in.arm

index fa999d5ec40674351f344fe9fcd387ab57be26bf..1a3c36d5c5151d0c498877be44792032e912b0a8 100644 (file)
@@ -31,6 +31,10 @@ config BR2_ARM_CPU_HAS_VFPV4
        bool
        select BR2_ARM_CPU_HAS_VFPV3
 
+config BR2_ARM_CPU_HAS_FP_ARMV8
+       bool
+       select BR2_ARM_CPU_HAS_VFPV4
+
 config BR2_ARM_CPU_HAS_ARM
        bool
 
@@ -308,6 +312,7 @@ endchoice
 
 choice
        prompt "Floating point strategy"
+       default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8
        default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4
        default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3
        default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2
@@ -418,6 +423,20 @@ config BR2_ARM_FPU_NEON_VFPV4
          example on Cortex-A5 and Cortex-A7, support for VFPv4 and
          NEON is optional.
 
+config BR2_ARM_FPU_FP_ARMV8
+       bool "FP-ARMv8"
+       depends on BR2_ARM_CPU_HAS_FP_ARMV8
+       help
+         This option allows to use the ARMv8 floating point unit.
+
+config BR2_ARM_FPU_NEON_FP_ARMV8
+       bool "NEON/FP-ARMv8"
+       depends on BR2_ARM_CPU_HAS_FP_ARMV8
+       depends on BR2_ARM_CPU_HAS_NEON
+       help
+         This option allows to use both the ARMv8 floating point unit
+         and the NEON SIMD unit for floating point operations.
+
 endchoice
 
 choice
@@ -504,6 +523,8 @@ config BR2_GCC_TARGET_FPU
        default "vfpv4-d16"     if BR2_ARM_FPU_VFPV4D16
        default "neon"          if BR2_ARM_FPU_NEON
        default "neon-vfpv4"    if BR2_ARM_FPU_NEON_VFPV4
+       default "fp-armv8"      if BR2_ARM_FPU_FP_ARMV8
+       default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8
 
 config BR2_GCC_TARGET_FLOAT_ABI
        default "soft"          if BR2_ARM_SOFT_FLOAT