mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-15 17:14:21 +00:00
feat(stm32mp1): add plat_report_*_abort functions
The new helpers are created in STM32MP1 platform for prefetch and data aborts. While at it, put plat_report_exception() under DEBUG flag. If DEBUG is not set, the weak function which does the same will be used. This plat_report_exception() function can also be simplified, as it will no more be used to report aborts. Change-Id: Ibe989b28e236693f317cffb0545ea0611b7bdde4 Signed-off-by: Yann Gautier <yann.gautier@st.com>
This commit is contained in:
parent
6dc5979a6c
commit
0423868373
1 changed files with 82 additions and 15 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2015-2022, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -15,6 +15,8 @@
|
|||
|
||||
.globl platform_mem_init
|
||||
.globl plat_report_exception
|
||||
.globl plat_report_prefetch_abort
|
||||
.globl plat_report_data_abort
|
||||
.globl plat_get_my_entrypoint
|
||||
.globl plat_secondary_cold_boot_setup
|
||||
.globl plat_reset_handler
|
||||
|
@ -30,20 +32,18 @@ func platform_mem_init
|
|||
bx lr
|
||||
endfunc platform_mem_init
|
||||
|
||||
func plat_report_exception
|
||||
#if DEBUG
|
||||
func plat_report_exception
|
||||
mov r8, lr
|
||||
|
||||
/* Test if an abort occurred */
|
||||
/*
|
||||
* Test if an abort occurred
|
||||
* In this case the error message has already been displayed
|
||||
* by dedicated functions
|
||||
*/
|
||||
cmp r0, #MODE32_abt
|
||||
bne undef_inst_lbl
|
||||
ldr r4, =abort_str
|
||||
bl asm_print_str
|
||||
mrs r4, lr_abt
|
||||
sub r4, r4, #4
|
||||
b print_exception_info
|
||||
beq 1f
|
||||
|
||||
undef_inst_lbl:
|
||||
/* Test for an undefined instruction */
|
||||
cmp r0, #MODE32_und
|
||||
bne other_exception_lbl
|
||||
|
@ -69,12 +69,69 @@ print_exception_info:
|
|||
ldr r4, =end_error_str
|
||||
bl asm_print_str
|
||||
|
||||
1:
|
||||
bx r8
|
||||
#else
|
||||
bx lr
|
||||
#endif
|
||||
endfunc plat_report_exception
|
||||
|
||||
func plat_report_prefetch_abort
|
||||
mov r8, lr
|
||||
mov r9, r0
|
||||
|
||||
ldr r4, =prefetch_abort_str
|
||||
bl asm_print_str
|
||||
|
||||
mov r4, r9
|
||||
sub r4, r4, #4
|
||||
bl asm_print_hex
|
||||
|
||||
ldr r4, =ifsr_str
|
||||
bl asm_print_str
|
||||
|
||||
ldcopr r4, IFSR
|
||||
bl asm_print_hex
|
||||
|
||||
ldr r4, =ifar_str
|
||||
bl asm_print_str
|
||||
|
||||
ldcopr r4, IFAR
|
||||
bl asm_print_hex
|
||||
|
||||
ldr r4, =end_error_str
|
||||
bl asm_print_str
|
||||
|
||||
bx r8
|
||||
endfunc plat_report_prefetch_abort
|
||||
|
||||
func plat_report_data_abort
|
||||
mov r8, lr
|
||||
mov r9, r0
|
||||
|
||||
ldr r4, =data_abort_str
|
||||
bl asm_print_str
|
||||
|
||||
mov r4, r9
|
||||
sub r4, r4, #8
|
||||
bl asm_print_hex
|
||||
|
||||
ldr r4, =dfsr_str
|
||||
bl asm_print_str
|
||||
|
||||
ldcopr r4, DFSR
|
||||
bl asm_print_hex
|
||||
|
||||
ldr r4, =dfar_str
|
||||
bl asm_print_str
|
||||
|
||||
ldcopr r4, DFAR
|
||||
bl asm_print_hex
|
||||
|
||||
ldr r4, =end_error_str
|
||||
bl asm_print_str
|
||||
|
||||
bx r8
|
||||
endfunc plat_report_data_abort
|
||||
#endif /* DEBUG */
|
||||
|
||||
func plat_reset_handler
|
||||
bx lr
|
||||
endfunc plat_reset_handler
|
||||
|
@ -256,14 +313,24 @@ endfunc plat_panic_handler
|
|||
|
||||
#if DEBUG
|
||||
.section .rodata.rev_err_str, "aS"
|
||||
abort_str:
|
||||
.asciz "\nAbort at: 0x"
|
||||
prefetch_abort_str:
|
||||
.asciz "\nPrefetch Abort at: 0x"
|
||||
data_abort_str:
|
||||
.asciz "\nData Abort at: 0x"
|
||||
undefined_str:
|
||||
.asciz "\nUndefined instruction at: 0x"
|
||||
exception_start_str:
|
||||
.asciz "\nException mode=0x"
|
||||
exception_end_str:
|
||||
.asciz " at: 0x"
|
||||
dfsr_str:
|
||||
.asciz " DFSR = 0x"
|
||||
dfar_str:
|
||||
.asciz " DFAR = 0x"
|
||||
ifsr_str:
|
||||
.asciz " IFSR = 0x"
|
||||
ifar_str:
|
||||
.asciz " IFAR = 0x"
|
||||
end_error_str:
|
||||
.asciz "\n\r"
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue