aboutsummaryrefslogtreecommitdiffstats
path: root/bl31/aarch64/ea_delegate.S
diff options
context:
space:
mode:
authorAntonio Nino Diaz <antonio.ninodiaz@arm.com>2019-02-19 11:53:51 +0000
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>2019-02-27 11:58:09 +0000
commitb86048c40cb7d9ccd7aeac1681945676a6dc36ff (patch)
tree3a501b3395633ab07d312068c1dacd591493c7ac /bl31/aarch64/ea_delegate.S
parent5283962ebaf77850d68bb457608ede5174e43159 (diff)
downloadplatform_external_arm-trusted-firmware-b86048c40cb7d9ccd7aeac1681945676a6dc36ff.tar.gz
platform_external_arm-trusted-firmware-b86048c40cb7d9ccd7aeac1681945676a6dc36ff.tar.bz2
platform_external_arm-trusted-firmware-b86048c40cb7d9ccd7aeac1681945676a6dc36ff.zip
Add support for pointer authentication
The previous commit added the infrastructure to load and save ARMv8.3-PAuth registers during Non-secure <-> Secure world switches, but didn't actually enable pointer authentication in the firmware. This patch adds the functionality needed for platforms to provide authentication keys for the firmware, and a new option (ENABLE_PAUTH) to enable pointer authentication in the firmware itself. This option is disabled by default, and it requires CTX_INCLUDE_PAUTH_REGS to be enabled. Change-Id: I35127ec271e1198d43209044de39fa712ef202a5 Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Diffstat (limited to 'bl31/aarch64/ea_delegate.S')
-rw-r--r--bl31/aarch64/ea_delegate.S8
1 files changed, 8 insertions, 0 deletions
diff --git a/bl31/aarch64/ea_delegate.S b/bl31/aarch64/ea_delegate.S
index d5ecfc50e..40c3191ac 100644
--- a/bl31/aarch64/ea_delegate.S
+++ b/bl31/aarch64/ea_delegate.S
@@ -68,9 +68,13 @@ func enter_lower_el_sync_ea
/* Save GP registers */
bl save_gp_registers
+ /* Save ARMv8.3-PAuth registers and load firmware key */
#if CTX_INCLUDE_PAUTH_REGS
bl pauth_context_save
#endif
+#if ENABLE_PAUTH
+ bl pauth_load_bl_apiakey
+#endif
/* Setup exception class and syndrome arguments for platform handler */
mov x0, #ERROR_EA_SYNC
@@ -102,9 +106,13 @@ func enter_lower_el_async_ea
/* Save GP registers */
bl save_gp_registers
+ /* Save ARMv8.3-PAuth registers and load firmware key */
#if CTX_INCLUDE_PAUTH_REGS
bl pauth_context_save
#endif
+#if ENABLE_PAUTH
+ bl pauth_load_bl_apiakey
+#endif
/* Setup exception class and syndrome arguments for platform handler */
mov x0, #ERROR_EA_ASYNC