aboutsummaryrefslogtreecommitdiff
path: root/bl31/aarch64
diff options
context:
space:
mode:
authorAlexei Fedorov <Alexei.Fedorov@arm.com>2019-03-06 11:15:51 +0000
committerAlexei Fedorov <Alexei.Fedorov@arm.com>2019-03-07 10:50:10 +0000
commit7dcbb4f315087c53f3de2bf3b081f76d7513e4fd (patch)
tree1774e51af93ee60e1b002be3c2d04877dc0a7304 /bl31/aarch64
parentf009c5f312476cdfc0704a3c8a9c66b7fe5b6586 (diff)
downloadtrusted-firmware-a-7dcbb4f315087c53f3de2bf3b081f76d7513e4fd.tar.gz
BL31: Enable pointer authentication support in warm boot path
In the current Pointer Authentication support added in commit b86048c40cb7d9ccd7aeac1681945676a6dc36ff PAuth gets enabled in BL31 cold boot entrypoint only, (see bl31_entrypoint() in bl31\aarch64\bl31_entrypoint.S) but not in bl31_warm_entrypoint(). This results in EnIA bit [31] in SCTLR_EL3 not being set and pointer authentication disabled after CPU wake-up event. Fixes ARM-software/tf-issues#684 Change-Id: I27a67804764dfba2a6d72ca119ca2bcff4f536d6 Signed-off-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
Diffstat (limited to 'bl31/aarch64')
-rw-r--r--bl31/aarch64/bl31_entrypoint.S13
1 files changed, 13 insertions, 0 deletions
diff --git a/bl31/aarch64/bl31_entrypoint.S b/bl31/aarch64/bl31_entrypoint.S
index 8e9528b474..065edffc7d 100644
--- a/bl31/aarch64/bl31_entrypoint.S
+++ b/bl31/aarch64/bl31_entrypoint.S
@@ -201,6 +201,19 @@ func bl31_warm_entrypoint
#endif
bl bl31_plat_enable_mmu
+ /* --------------------------------------------------------------------
+ * Enable pointer authentication
+ * --------------------------------------------------------------------
+ */
+#if ENABLE_PAUTH
+ bl pauth_load_bl_apiakey
+
+ mrs x0, sctlr_el3
+ orr x0, x0, #SCTLR_EnIA_BIT
+ msr sctlr_el3, x0
+ isb
+#endif /* ENABLE_PAUTH */
+
bl psci_warmboot_entrypoint
#if ENABLE_RUNTIME_INSTRUMENTATION