diff options
author | David Hendricks <dhendricks@fb.com> | 2018-02-07 13:27:26 -0800 |
---|---|---|
committer | David Hendricks <david.hendricks@gmail.com> | 2018-02-12 22:27:33 +0000 |
commit | cc3b69bd14db6d975c35aebf93c3a3f1525c08fd (patch) | |
tree | 0aadfff01bb638cfa04266c3d3760baae3e36f29 | |
parent | c92f13533bb55753b63316f2d0c00d9ed50b6e5f (diff) |
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 <dhendricks@fb.com>
Reviewed-on: https://review.coreboot.org/23641
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r-- | src/arch/arm64/armv8/Kconfig | 12 | ||||
-rw-r--r-- | src/arch/arm64/armv8/Makefile.inc | 8 |
2 files changed, 19 insertions, 1 deletions
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 |