/* * Copyright (c) 2021, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include .globl el2_panic /*********************************************************** * The common implementation of do_panic for all BL stages ***********************************************************/ .section .rodata.panic_str, "aS" panic_msg: .asciz "PANIC at PC : 0x" /* * el2_panic will be redefined by the * crash reporting mechanism (if enabled) */ el2_panic: mov x6, x30 bl plat_crash_console_init /* Check if the console is initialized */ cbz x0, _panic_handler /* The console is initialized */ adr x4, panic_msg bl asm_print_str mov x4, x6 /* The panic location is lr -4 */ sub x4, x4, #4 bl asm_print_hex bl plat_crash_console_flush _panic_handler: /* Pass to plat_panic_handler the address from where el2_panic was * called, not the address of the call from el2_panic. */ mov x30, x6 b plat_panic_handler