refactor(aarch64): rename do_panic and el3_panic

Current panic call invokes do_panic which calls el3_panic, but now panic
handles only panic from EL3 anid clear separation to use lower_el_panic()
which handles panic from lower ELs.

So now we can remove do_panic and just call el3_panic for all panics.

Change-Id: I739c69271b9fb15c1176050877a9b0c0394dc739
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
This commit is contained in:
Govindraj Raja 2023-01-16 17:35:07 +00:00
parent f300ef6628
commit bd62ce98d2
9 changed files with 21 additions and 29 deletions

View file

@ -201,7 +201,7 @@ func delegate_async_ea
*/ */
ubfx x2, x1, #ESR_EC_SHIFT, #ESR_EC_LENGTH ubfx x2, x1, #ESR_EC_SHIFT, #ESR_EC_LENGTH
cmp x2, EC_SERROR cmp x2, EC_SERROR
b.ne do_panic b.ne el3_panic
/* /*
* Check for Implementation Defined Syndrome. If so, skip checking * Check for Implementation Defined Syndrome. If so, skip checking
* Uncontainable error type from the syndrome as the format is unknown. * Uncontainable error type from the syndrome as the format is unknown.

View file

@ -563,7 +563,7 @@ sysreg_handler64:
*/ */
tst w0, w0 tst w0, w0
b.mi do_panic /* negative return value: panic */ b.mi el3_panic /* negative return value: panic */
b.eq 1f /* zero: do not change ELR_EL3 */ b.eq 1f /* zero: do not change ELR_EL3 */
/* advance the PC to continue after the instruction */ /* advance the PC to continue after the instruction */

View file

@ -12,7 +12,7 @@
.globl asm_print_hex .globl asm_print_hex
.globl asm_print_hex_bits .globl asm_print_hex_bits
.globl asm_assert .globl asm_assert
.globl do_panic .globl el3_panic
.globl report_exception .globl report_exception
.globl report_prefetch_abort .globl report_prefetch_abort
.globl report_data_abort .globl report_data_abort
@ -159,14 +159,14 @@ asm_print_hex_bits:
endfunc asm_print_hex endfunc asm_print_hex
/*********************************************************** /***********************************************************
* The common implementation of do_panic for all BL stages * The common implementation of el3_panic for all BL stages
***********************************************************/ ***********************************************************/
.section .rodata.panic_str, "aS" .section .rodata.panic_str, "aS"
panic_msg: .asciz "PANIC at PC : 0x" panic_msg: .asciz "PANIC at PC : 0x"
panic_end: .asciz "\r\n" panic_end: .asciz "\r\n"
func do_panic func el3_panic
/* Have LR copy point to PC at the time of panic */ /* Have LR copy point to PC at the time of panic */
sub r6, lr, #4 sub r6, lr, #4
@ -194,7 +194,7 @@ func do_panic
_panic_handler: _panic_handler:
mov lr, r6 mov lr, r6
b plat_panic_handler b plat_panic_handler
endfunc do_panic endfunc el3_panic
/*********************************************************** /***********************************************************
* This function is called from the vector table for * This function is called from the vector table for

View file

@ -13,7 +13,6 @@
.globl asm_print_hex_bits .globl asm_print_hex_bits
.globl asm_print_newline .globl asm_print_newline
.globl asm_assert .globl asm_assert
.globl do_panic
.globl el3_panic .globl el3_panic
/* Since the max decimal input number is 65536 */ /* Since the max decimal input number is 65536 */
@ -146,30 +145,24 @@ func asm_print_newline
endfunc asm_print_newline endfunc asm_print_newline
/*********************************************************** /***********************************************************
* The common implementation of do_panic for all BL stages * The common implementation of el3_panic for all BL stages
***********************************************************/ ***********************************************************/
.section .rodata.panic_str, "aS" .section .rodata.panic_str, "aS"
panic_msg: .asciz "PANIC at PC : 0x" panic_msg: .asciz "PANIC at PC : 0x"
/* --------------------------------------------------------------------------- /* ---------------------------------------------------------------------------
* do_panic assumes that it is invoked from a C Runtime Environment ie a * el3_panic assumes that it is invoked from a C Runtime Environment ie a
* valid stack exists. This call will not return. * valid stack exists. This call will not return.
* Clobber list : if CRASH_REPORTING is not enabled then x30, x0 - x6 * Clobber list : if CRASH_REPORTING is not enabled then x30, x0 - x6
* --------------------------------------------------------------------------- * ---------------------------------------------------------------------------
*/ */
func do_panic func el3_panic
#if CRASH_REPORTING && defined(IMAGE_BL31) #if CRASH_REPORTING && defined(IMAGE_BL31)
b report_el3_panic b report_el3_panic
#endif /* CRASH_REPORTING && IMAGE_BL31 */ #endif /* CRASH_REPORTING && IMAGE_BL31 */
panic_common:
/*
* el3_panic will be redefined by the BL31
* crash reporting mechanism (if enabled)
*/
el3_panic:
mov x6, x30 mov x6, x30
bl plat_crash_console_init bl plat_crash_console_init
@ -196,4 +189,4 @@ _panic_handler:
mov x30, x6 mov x30, x6
b plat_panic_handler b plat_panic_handler
endfunc do_panic endfunc el3_panic

View file

@ -3205,8 +3205,8 @@ as Group 0 secure interrupt, Group 1 secure interrupt or Group 1 NS interrupt.
Common helper functions Common helper functions
----------------------- -----------------------
Function : do_panic() Function : el3_panic()
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
:: ::
@ -3214,9 +3214,8 @@ Function : do_panic()
Return : void Return : void
This API is called from assembly files when encountering a critical failure that This API is called from assembly files when encountering a critical failure that
cannot be recovered from. It also invokes elx_panic() which allows to report a cannot be recovered from. This function assumes that it is invoked from a C
crash from lower exception level. This function assumes that it is invoked from runtime environment i.e. valid stack exists. This call **must not** return.
a C runtime environment i.e. valid stack exists. This call **must not** return.
Function : panic() Function : panic()
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
@ -3228,7 +3227,7 @@ Function : panic()
This API called from C files when encountering a critical failure that cannot This API called from C files when encountering a critical failure that cannot
be recovered from. This function in turn prints backtrace (if enabled) and calls be recovered from. This function in turn prints backtrace (if enabled) and calls
do_panic(). This call **must not** return. el3_panic(). This call **must not** return.
Crash Reporting mechanism (in BL31) Crash Reporting mechanism (in BL31)
----------------------------------- -----------------------------------

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved. * Copyright (c) 2015-2023 Arm Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */

View file

@ -99,14 +99,14 @@ void backtrace(const char *cookie);
#define backtrace(x) #define backtrace(x)
#endif #endif
void __dead2 do_panic(void); void __dead2 el3_panic(void);
void __dead2 report_elx_panic(void); void __dead2 report_elx_panic(void);
#define panic() \ #define panic() \
do { \ do { \
backtrace(__func__); \ backtrace(__func__); \
console_flush(); \ console_flush(); \
do_panic(); \ el3_panic(); \
} while (false) } while (false)
#if CRASH_REPORTING #if CRASH_REPORTING

View file

@ -11,7 +11,7 @@
.globl el2_panic .globl el2_panic
/*********************************************************** /***********************************************************
* The common implementation of do_panic for all BL stages * The common implementation of el3_panic for all BL stages
***********************************************************/ ***********************************************************/
.section .rodata.panic_str, "aS" .section .rodata.panic_str, "aS"

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2013-2020, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2013-2023, Arm Limited and Contributors. All rights reserved.
* Copyright (c) 2015-2021, Renesas Electronics Corporation. All rights reserved. * Copyright (c) 2015-2021, Renesas Electronics Corporation. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
@ -126,7 +126,7 @@ warm_reset:
exit: exit:
ret x9 ret x9
_panic: _panic:
b do_panic b el3_panic
#endif #endif
endfunc plat_get_my_entrypoint endfunc plat_get_my_entrypoint