mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-24 05:54:08 +00:00
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
This commit is contained in:
parent
17e76b5eb7
commit
df56e9d199
1 changed files with 1 additions and 5 deletions
|
@ -1,5 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2022, ARM Limited and Contributors. All rights reserved.
|
* 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
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -84,10 +85,6 @@ func enter_lower_el_sync_ea
|
||||||
b 2f
|
b 2f
|
||||||
|
|
||||||
1:
|
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).
|
* Save general purpose and ARMv8.3-PAuth registers (if enabled).
|
||||||
* If Secure Cycle Counter is not disabled in MDCR_EL3 when
|
* 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 x2, x3, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_X2]
|
||||||
ldp x4, x5, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_X4]
|
ldp x4, x5, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_X4]
|
||||||
|
|
||||||
3:
|
|
||||||
/* Synchronous exceptions other than the above are assumed to be EA */
|
/* Synchronous exceptions other than the above are assumed to be EA */
|
||||||
ldr x30, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_LR]
|
ldr x30, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_LR]
|
||||||
no_ret report_unhandled_exception
|
no_ret report_unhandled_exception
|
||||||
|
|
Loading…
Add table
Reference in a new issue