From cc3b69bd14db6d975c35aebf93c3a3f1525c08fd Mon Sep 17 00:00:00 2001 From: David Hendricks Date: Wed, 7 Feb 2018 13:27:26 -0800 Subject: armv8: Allow for ARMv8 extensions to be chosen There are now a few architectural extensions available for ARMv8, some of which introduce instructions or other features that may be useful. This allows the user to select an extension implemented on their SoC which will set the -march option passed into the compiler. Change-Id: Ifca50dad98aab130ac04df455bac2cfb65abf82e Signed-off-by: David Hendricks Reviewed-on: https://review.coreboot.org/23641 Tested-by: build bot (Jenkins) Reviewed-by: Julius Werner --- src/arch/arm64/armv8/Kconfig | 12 ++++++++++++ src/arch/arm64/armv8/Makefile.inc | 8 +++++++- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src/arch/arm64/armv8') diff --git a/src/arch/arm64/armv8/Kconfig b/src/arch/arm64/armv8/Kconfig index 02a8dba93b..2070bea197 100644 --- a/src/arch/arm64/armv8/Kconfig +++ b/src/arch/arm64/armv8/Kconfig @@ -13,3 +13,15 @@ config ARCH_ROMSTAGE_ARMV8_64 config ARCH_RAMSTAGE_ARMV8_64 def_bool n select ARCH_RAMSTAGE_ARM64 + +config ARCH_ARMV8_EXTENSION + int + default 0 + help + Specify ARMv8 extension, for example '1' for ARMv8.1, to control the + '-march' option passed into the compiler. Defaults to 0 for vanilla + ARMv8 but may be overridden in the SoC's Kconfig. + + All ARMv8 implementations are downwards-compatible, so this does not + need to be changed unless specific features (e.g. new instructions) + are used by the SoC's coreboot code. diff --git a/src/arch/arm64/armv8/Makefile.inc b/src/arch/arm64/armv8/Makefile.inc index 21ebf70bfb..14a784bb92 100644 --- a/src/arch/arm64/armv8/Makefile.inc +++ b/src/arch/arm64/armv8/Makefile.inc @@ -17,7 +17,13 @@ subdirs-y += lib/ -armv8_flags = -march=armv8-a -I$(src)/arch/arm64/include/armv8/ -D__COREBOOT_ARM_ARCH__=8 +ifeq ($(CONFIG_ARCH_ARMV8_EXTENSION),0) +march = armv8-a +else +march = armv8.$(CONFIG_ARCH_ARMV8_EXTENSION)-a +endif + +armv8_flags = -march=$(march) -I$(src)/arch/arm64/include/armv8/ -D__COREBOOT_ARM_ARCH__=8 ################################################################################ ## bootblock -- cgit v1.2.3