summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVarun Wadekar <vwadekar@nvidia.com>2022-08-03 12:01:36 +0100
committerVarun Wadekar <vwadekar@nvidia.com>2022-08-03 12:01:36 +0100
commitdf56e9d199939c571b3fd8f539d213fc36e14494 (patch)
tree00cbf5eecf569253718f1c0ab7ba2bfa17c41235
parent17e76b5eb7901534ff9ee3f62b9990ba6038b002 (diff)
downloadarm-trusted-firmware-df56e9d199939c571b3fd8f539d213fc36e14494.tar.gz
fix(bl31): pass the EA bit to 'delegate_sync_ea'
During a synchronous exception, the 'enter_lower_el_sync_ea' handler tests the ESR_EL3 EA bit and calls 'report_unhandled_exception', if it is not set. EA = 0 and IFSC = SEA, seems to be a contradiction. EA provides further classification of a synchronous abort. A synchronous abort is determined by the IFSC value on an instruction fetch synchronous abort. As a result, EA will never be set to 1 on an instruction fetch synchronous abort and 'report_unhandled_exception' should not be called. This patch removes this behavior to allow the platform to handle the exception. Signed-off-by: Nicolas Benech <nbenech@nvidia.com> Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Change-Id: I3f004447ad4316d81649063e1ffb3ac644c83ede
-rw-r--r--bl31/aarch64/ea_delegate.S6
1 files changed, 1 insertions, 5 deletions
diff --git a/bl31/aarch64/ea_delegate.S b/bl31/aarch64/ea_delegate.S
index fa6ede823..5e53ab4b6 100644
--- a/bl31/aarch64/ea_delegate.S
+++ b/bl31/aarch64/ea_delegate.S
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2022, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2022, NVIDIA Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -84,10 +85,6 @@ func enter_lower_el_sync_ea
b 2f
1:
- /* Test for EA bit in the instruction syndrome */
- mrs x30, esr_el3
- tbz x30, #ESR_ISS_EABORT_EA_BIT, 3f
-
/*
* Save general purpose and ARMv8.3-PAuth registers (if enabled).
* If Secure Cycle Counter is not disabled in MDCR_EL3 when
@@ -114,7 +111,6 @@ func enter_lower_el_sync_ea
ldp x2, x3, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_X2]
ldp x4, x5, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_X4]
-3:
/* Synchronous exceptions other than the above are assumed to be EA */
ldr x30, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_LR]
no_ret report_unhandled_exception