summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorDavid Hendricks <dhendricks@fb.com>2018-02-07 13:27:26 -0800
committerDavid Hendricks <david.hendricks@gmail.com>2018-02-12 22:27:33 +0000
commitcc3b69bd14db6d975c35aebf93c3a3f1525c08fd (patch)
tree0aadfff01bb638cfa04266c3d3760baae3e36f29 /src/arch
parentc92f13533bb55753b63316f2d0c00d9ed50b6e5f (diff)
downloadcoreboot-cc3b69bd14db6d975c35aebf93c3a3f1525c08fd.tar.xz
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>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/arm64/armv8/Kconfig12
-rw-r--r--src/arch/arm64/armv8/Makefile.inc8
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