arch/riscv: set the default float ABI based on ISA extensions
authorMark Corbin <mark.corbin@embecosm.com>
Thu, 19 Sep 2019 15:40:35 +0000 (16:40 +0100)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Thu, 19 Sep 2019 19:43:53 +0000 (21:43 +0200)
This patch sets the default floating point ABI based on the ISA
extensions that have been selected rather than defaulting to soft
float.

For 64-bit:

ISA 'D' selects  lp64d
ISA 'F' selects  lp64f
Otherwise select lp64

For 32-bit:

ISA 'D' selects  ilp32d
ISA 'F' selects  ilp32f
Otherwise select ilp32

This change was proposed by Palmer Dabbelt at SiFive.

Signed-off-by: Mark Corbin <mark.corbin@embecosm.com>
Reviewed-by: Palmer Dabbelt <palmer@sifive.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
arch/Config.in.riscv

index bdd2672602a338142ad75816df279961e0e27039..1fc20e5de745caa07bd09f9eb6101988a3789ca2 100644 (file)
@@ -80,8 +80,12 @@ endchoice
 
 choice
        prompt "Target ABI"
-       default BR2_RISCV_ABI_ILP32 if !BR2_ARCH_IS_64
-       default BR2_RISCV_ABI_LP64 if BR2_ARCH_IS_64
+       default BR2_RISCV_ABI_ILP32D if !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD
+       default BR2_RISCV_ABI_ILP32F if !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF
+       default BR2_RISCV_ABI_ILP32  if !BR2_ARCH_IS_64
+       default BR2_RISCV_ABI_LP64D  if BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD
+       default BR2_RISCV_ABI_LP64F  if BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF
+       default BR2_RISCV_ABI_LP64   if BR2_ARCH_IS_64
 
 config BR2_RISCV_ABI_ILP32
        bool "ilp32"