aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorJens Wiklander <jens.wiklander@linaro.org>2014-12-14 22:18:03 +0100
committerJens Wiklander <jens.wiklander@linaro.org>2015-01-19 09:37:10 +0100
commitc45480851a2c86e1c2bf9bf225466a74271de1fa (patch)
treeb6fc4ab01aee993b07473abdf9a686ef162321a8 /core
parent0f2293b796b141d15c18db856d63f200e4f02981 (diff)
plat-vexpress: config nsacr
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Diffstat (limited to 'core')
-rw-r--r--core/arch/arm32/include/arm32.h3
-rw-r--r--core/arch/arm32/plat-vexpress/main.c14
2 files changed, 17 insertions, 0 deletions
diff --git a/core/arch/arm32/include/arm32.h b/core/arch/arm32/include/arm32.h
index 093ed79..bac4a62 100644
--- a/core/arch/arm32/include/arm32.h
+++ b/core/arch/arm32/include/arm32.h
@@ -109,6 +109,9 @@
#define TTBCR_PD0 (1 << 4)
#define TTBCR_PD1 (1 << 5)
+#define NSACR_CP10 (1 << 10)
+#define NSACR_CP11 (1 << 11)
+
#ifndef ASM
static inline uint32_t read_mpidr(void)
{
diff --git a/core/arch/arm32/plat-vexpress/main.c b/core/arch/arm32/plat-vexpress/main.c
index 1ddce7a..1d4938a 100644
--- a/core/arch/arm32/plat-vexpress/main.c
+++ b/core/arch/arm32/plat-vexpress/main.c
@@ -256,6 +256,18 @@ static void main_init_sec_mon(size_t pos, uint32_t nsec_entry)
}
#endif
+#if defined(WITH_ARM_TRUSTED_FW)
+static void main_init_nsacr(void)
+{
+}
+#else
+static void main_init_nsacr(void)
+{
+ /* Normal world can use CP10 and CP11 (SIMD/VFP) */
+ write_nsacr(read_nsacr() | NSACR_CP10 | NSACR_CP11);
+}
+#endif
+
#if PLATFORM_FLAVOR_IS(fvp) || PLATFORM_FLAVOR_IS(juno)
static void main_init_gic(void)
{
@@ -508,6 +520,7 @@ static void main_init_primary_helper(uint32_t pagable_part, uint32_t nsec_entry)
main_init_thread_stacks();
main_init_gic();
+ main_init_nsacr();
if (init_teecore() != TEE_SUCCESS)
panic();
@@ -534,6 +547,7 @@ static void main_init_secondary_helper(uint32_t nsec_entry)
thread_init_per_cpu();
main_init_sec_mon(pos, nsec_entry);
+ main_init_nsacr();
DMSG("Secondary CPU Switching to normal world boot\n");
}