aboutsummaryrefslogtreecommitdiff
path: root/make_helpers
diff options
context:
space:
mode:
authorDavid Cunado <david.cunado@arm.com>2017-10-20 11:30:57 +0100
committerDavid Cunado <david.cunado@arm.com>2017-11-30 17:45:09 +0000
commit1a853370ff8e9ff3b147297d1fc7942e7db43dd9 (patch)
tree5ee1e382ae61df463d74c82d7aadefbda04fa3c1 /make_helpers
parent3642ca951bfd06afbd8024b295ce3c14860024b3 (diff)
downloadtrusted-firmware-a-1a853370ff8e9ff3b147297d1fc7942e7db43dd9.tar.gz
Enable SVE for Non-secure world
This patch adds a new build option, ENABLE_SVE_FOR_NS, which when set to one EL3 will check to see if the Scalable Vector Extension (SVE) is implemented when entering and exiting the Non-secure world. If SVE is implemented, EL3 will do the following: - Entry to Non-secure world: SIMD, FP and SVE functionality is enabled. - Exit from Non-secure world: SIMD, FP and SVE functionality is disabled. As SIMD and FP registers are part of the SVE Z-registers then any use of SIMD / FP functionality would corrupt the SVE registers. The build option default is 1. The SVE functionality is only supported on AArch64 and so the build option is set to zero when the target archiecture is AArch32. This build option is not compatible with the CTX_INCLUDE_FPREGS - an assert will be raised on platforms where SVE is implemented and both ENABLE_SVE_FOR_NS and CTX_INCLUDE_FPREGS are set to 1. Also note this change prevents secure world use of FP&SIMD registers on SVE-enabled platforms. Existing Secure-EL1 Payloads will not work on such platforms unless ENABLE_SVE_FOR_NS is set to 0. Additionally, on the first entry into the Non-secure world the SVE functionality is enabled and the SVE Z-register length is set to the maximum size allowed by the architecture. This includes the use case where EL2 is implemented but not used. Change-Id: Ie2d733ddaba0b9bef1d7c9765503155188fe7dae Signed-off-by: David Cunado <david.cunado@arm.com>
Diffstat (limited to 'make_helpers')
-rw-r--r--make_helpers/defaults.mk9
1 files changed, 9 insertions, 0 deletions
diff --git a/make_helpers/defaults.mk b/make_helpers/defaults.mk
index 9f7abed1eb..1d20080eb6 100644
--- a/make_helpers/defaults.mk
+++ b/make_helpers/defaults.mk
@@ -158,3 +158,12 @@ ifeq (${ARCH},aarch32)
endif
ENABLE_AMU := 0
+
+# By default, enable Scalable Vector Extension if implemented for Non-secure
+# lower ELs
+# Note SVE is only supported on AArch64 - therefore do not enable in AArch32
+ifneq (${ARCH},aarch32)
+ ENABLE_SVE_FOR_NS := 1
+else
+ override ENABLE_SVE_FOR_NS := 0
+endif