riscv: set -march and -mabi based on the Kconfig configuration
authorLukas Auer <lukas.auer@aisec.fraunhofer.de>
Thu, 22 Nov 2018 10:26:15 +0000 (11:26 +0100)
committerAndes <uboot@andestech.com>
Mon, 26 Nov 2018 05:57:29 +0000 (13:57 +0800)
Use the new Kconfig entries to construct the ISA string for the -march
compiler flag. The -mabi compiler flag is selected based on the base
integer instruction set.

With this change, the C (compressed instructions) ISA extension is now
enabled for all boards with CONFIG_RISCV_ISA_C set. Buildman reports a
decrease in binary size of 71590 bytes.

Signed-off-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/riscv/Makefile
arch/riscv/config.mk

index 8fb6a889d8dea302a5ef58e3869b5c5725bac63c..55d7c6550e98bab450c706ade18feeb4343b40d4 100644 (file)
@@ -3,6 +3,26 @@
 # Copyright (C) 2017 Andes Technology Corporation.
 # Rick Chen, Andes Technology Corporation <rick@andestech.com>
 
+ifeq ($(CONFIG_ARCH_RV64I),y)
+       ARCH_BASE = rv64im
+       ABI = lp64
+endif
+ifeq ($(CONFIG_ARCH_RV32I),y)
+       ARCH_BASE = rv32im
+       ABI = ilp32
+endif
+ifeq ($(CONFIG_RISCV_ISA_A),y)
+       ARCH_A = a
+endif
+ifeq ($(CONFIG_RISCV_ISA_C),y)
+       ARCH_C = c
+endif
+
+ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI)
+
+PLATFORM_CPPFLAGS      += $(ARCH_FLAGS)
+CFLAGS_EFI             += $(ARCH_FLAGS)
+
 head-y := arch/riscv/cpu/start.o
 
 libs-y += arch/riscv/cpu/
index cc5d8d1ad5e138dfb688336452196c3eb4a09859..97e2d41c3daf7d019c650ae23231b449d9d459cb 100644 (file)
 64bit-emul             := elf64lriscv
 
 ifdef CONFIG_32BIT
-PLATFORM_CPPFLAGS      += -march=rv32ima -mabi=ilp32
 PLATFORM_LDFLAGS       += -m $(32bit-emul)
-CFLAGS_EFI             += -march=rv32ima -mabi=ilp32
 EFI_LDS                        := elf_riscv32_efi.lds
 endif
 
 ifdef CONFIG_64BIT
-PLATFORM_CPPFLAGS      += -march=rv64ima -mabi=lp64
 PLATFORM_LDFLAGS       += -m $(64bit-emul)
-CFLAGS_EFI             += -march=rv64ima -mabi=lp64
 EFI_LDS                        := elf_riscv64_efi.lds
 endif