mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-13 16:14:20 +00:00
AArch64: Align crash reporting output
This patch modifies crash reporting for AArch64 to provide aligned output of register dump and GIC registers. Change-Id: I8743bf1d2d6d56086e735df43785ef28051c5fc3 Signed-off-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
This commit is contained in:
parent
2102198ce8
commit
6c6a470fc1
3 changed files with 45 additions and 13 deletions
|
@ -28,7 +28,7 @@
|
|||
*/
|
||||
.section .rodata.crash_prints, "aS"
|
||||
print_spacer:
|
||||
.asciz " =\t\t0x"
|
||||
.asciz " = 0x"
|
||||
|
||||
gp_regs:
|
||||
.asciz "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",\
|
||||
|
@ -55,11 +55,11 @@ aarch32_regs:
|
|||
#endif /* CTX_INCLUDE_AARCH32_REGS */
|
||||
|
||||
panic_msg:
|
||||
.asciz "PANIC in EL3 at x30 = 0x"
|
||||
.asciz "PANIC in EL3.\nx30"
|
||||
excpt_msg:
|
||||
.asciz "Unhandled Exception in EL3.\nx30 =\t\t0x"
|
||||
.asciz "Unhandled Exception in EL3.\nx30"
|
||||
intr_excpt_msg:
|
||||
.asciz "Unhandled Interrupt Exception in EL3.\nx30 =\t\t0x"
|
||||
.asciz "Unhandled Interrupt Exception in EL3.\nx30"
|
||||
|
||||
/*
|
||||
* Helper function to print newline to console.
|
||||
|
@ -94,10 +94,11 @@ test_size_list:
|
|||
mov x4, x6
|
||||
/* asm_print_str updates x4 to point to next entry in list */
|
||||
bl asm_print_str
|
||||
/* x0 = number of symbols printed + 1 */
|
||||
sub x0, x4, x6
|
||||
/* update x6 with the updated list pointer */
|
||||
mov x6, x4
|
||||
adr x4, print_spacer
|
||||
bl asm_print_str
|
||||
bl print_alignment
|
||||
ldr x4, [x7], #REGSZ
|
||||
bl asm_print_hex
|
||||
bl print_newline
|
||||
|
@ -107,6 +108,20 @@ exit_size_print:
|
|||
ret
|
||||
endfunc size_controlled_print
|
||||
|
||||
/* -----------------------------------------------------
|
||||
* This function calculates and prints required number
|
||||
* of space characters followed by "= 0x", based on the
|
||||
* length of ascii register name.
|
||||
* x0: length of ascii register name + 1
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
func print_alignment
|
||||
/* The minimum ascii length is 3, e.g. for "x0" */
|
||||
adr x4, print_spacer - 3
|
||||
add x4, x4, x0
|
||||
b asm_print_str
|
||||
endfunc print_alignment
|
||||
|
||||
/*
|
||||
* Helper function to store x8 - x15 registers to
|
||||
* the crash buf. The system registers values are
|
||||
|
@ -189,7 +204,7 @@ endfunc report_unhandled_interrupt
|
|||
* -----------------------------------------------------
|
||||
*/
|
||||
func el3_panic
|
||||
msr spsel, #1
|
||||
msr spsel, #MODE_SP_ELX
|
||||
prepare_crash_buf_save_x0_x1
|
||||
adr x0, panic_msg
|
||||
mov sp, x0
|
||||
|
@ -230,6 +245,9 @@ func do_crash_reporting
|
|||
/* Print the crash message. sp points to the crash message */
|
||||
mov x4, sp
|
||||
bl asm_print_str
|
||||
/* Print spaces to align "x30" string */
|
||||
mov x0, #4
|
||||
bl print_alignment
|
||||
/* load the crash buf address */
|
||||
mrs x0, tpidr_el3
|
||||
/* report x30 first from the crash buf */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2014-2019, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -10,6 +10,7 @@
|
|||
|
||||
.globl asm_print_str
|
||||
.globl asm_print_hex
|
||||
.globl asm_print_hex_bits
|
||||
.globl asm_assert
|
||||
.globl do_panic
|
||||
|
||||
|
@ -107,8 +108,11 @@ endfunc asm_print_str
|
|||
* Clobber: x30, x0 - x3, x5
|
||||
*/
|
||||
func asm_print_hex
|
||||
mov x3, x30
|
||||
mov x5, #64 /* No of bits to convert to ascii */
|
||||
|
||||
/* Convert to ascii number of bits in x5 */
|
||||
asm_print_hex_bits:
|
||||
mov x3, x30
|
||||
1:
|
||||
sub x5, x5, #4
|
||||
lsrv x0, x4, x5
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2015-2019, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -22,11 +22,13 @@ icc_regs:
|
|||
|
||||
/* Registers common to both GICv2 and GICv3 */
|
||||
gicd_pend_reg:
|
||||
.asciz "gicd_ispendr regs (Offsets 0x200 - 0x278)\n Offset:\t\t\tvalue\n"
|
||||
.asciz "gicd_ispendr regs (Offsets 0x200-0x278)\nOffset\t\t\tValue\n"
|
||||
newline:
|
||||
.asciz "\n"
|
||||
spacer:
|
||||
.asciz ":\t\t0x"
|
||||
.asciz ":\t\t 0x"
|
||||
prefix:
|
||||
.asciz "0x"
|
||||
|
||||
/* ---------------------------------------------
|
||||
* The below utility macro prints out relevant GIC
|
||||
|
@ -77,7 +79,15 @@ gicd_ispendr_loop:
|
|||
sub x4, x7, x16
|
||||
cmp x4, #0x280
|
||||
b.eq exit_print_gic_regs
|
||||
bl asm_print_hex
|
||||
|
||||
/* Print "0x" */
|
||||
adr x4, prefix
|
||||
bl asm_print_str
|
||||
|
||||
/* Print offset */
|
||||
sub x4, x7, x16
|
||||
mov x5, #12
|
||||
bl asm_print_hex_bits
|
||||
|
||||
adr x4, spacer
|
||||
bl asm_print_str
|
||||
|
|
Loading…
Add table
Reference in a new issue