From 4d91838b8d01a9e99c44fd0ed72f5d81b4595f17 Mon Sep 17 00:00:00 2001 From: Julius Werner Date: Thu, 27 Jul 2017 14:59:34 -0700 Subject: Fix x30 reporting for unhandled exceptions Some error paths that lead to a crash dump will overwrite the value in the x30 register by calling functions with the no_ret macro, which resolves to a BL instruction. This is not very useful and not what the reader would expect, since a crash dump should usually show all registers in the state they were in when the exception happened. This patch replaces the offending function calls with a B instruction to preserve the value in x30. Change-Id: I2a3636f2943f79bab0cd911f89d070012e697c2a Signed-off-by: Julius Werner --- common/aarch32/debug.S | 2 +- common/aarch64/debug.S | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'common') diff --git a/common/aarch32/debug.S b/common/aarch32/debug.S index 2e60bd52..583ee4a5 100644 --- a/common/aarch32/debug.S +++ b/common/aarch32/debug.S @@ -51,7 +51,7 @@ func do_panic 1: mov lr, r6 - no_ret plat_panic_handler + b plat_panic_handler endfunc do_panic /*********************************************************** diff --git a/common/aarch64/debug.S b/common/aarch64/debug.S index fe6a9a2d..d794d12e 100644 --- a/common/aarch64/debug.S +++ b/common/aarch64/debug.S @@ -175,6 +175,6 @@ el3_panic: _panic_handler: /* Pass to plat_panic_handler the address from where el3_panic was * called, not the address of the call from el3_panic. */ - mov x30,x6 - no_ret plat_panic_handler + mov x30, x6 + b plat_panic_handler endfunc do_panic -- cgit v1.2.3