diff options
author | Varun Wadekar <vwadekar@nvidia.com> | 2022-08-03 12:01:36 +0100 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2022-08-03 12:01:36 +0100 |
commit | df56e9d199939c571b3fd8f539d213fc36e14494 (patch) | |
tree | 00cbf5eecf569253718f1c0ab7ba2bfa17c41235 | |
parent | 17e76b5eb7901534ff9ee3f62b9990ba6038b002 (diff) | |
download | arm-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.S | 6 |
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 |