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 --- bl32/tsp/aarch64/tsp_exceptions.S | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'bl32') diff --git a/bl32/tsp/aarch64/tsp_exceptions.S b/bl32/tsp/aarch64/tsp_exceptions.S index 96d958eb..4b2ad75e 100644 --- a/bl32/tsp/aarch64/tsp_exceptions.S +++ b/bl32/tsp/aarch64/tsp_exceptions.S @@ -81,19 +81,19 @@ vector_base tsp_exceptions * ----------------------------------------------------- */ vector_entry sync_exception_sp_el0 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size sync_exception_sp_el0 vector_entry irq_sp_el0 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size irq_sp_el0 vector_entry fiq_sp_el0 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size fiq_sp_el0 vector_entry serror_sp_el0 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size serror_sp_el0 @@ -103,7 +103,7 @@ vector_entry serror_sp_el0 * ----------------------------------------------------- */ vector_entry sync_exception_sp_elx - no_ret plat_panic_handler + b plat_panic_handler check_vector_size sync_exception_sp_elx vector_entry irq_sp_elx @@ -115,7 +115,7 @@ vector_entry fiq_sp_elx check_vector_size fiq_sp_elx vector_entry serror_sp_elx - no_ret plat_panic_handler + b plat_panic_handler check_vector_size serror_sp_elx @@ -125,19 +125,19 @@ vector_entry serror_sp_elx * ----------------------------------------------------- */ vector_entry sync_exception_aarch64 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size sync_exception_aarch64 vector_entry irq_aarch64 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size irq_aarch64 vector_entry fiq_aarch64 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size fiq_aarch64 vector_entry serror_aarch64 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size serror_aarch64 @@ -147,17 +147,17 @@ vector_entry serror_aarch64 * ----------------------------------------------------- */ vector_entry sync_exception_aarch32 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size sync_exception_aarch32 vector_entry irq_aarch32 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size irq_aarch32 vector_entry fiq_aarch32 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size fiq_aarch32 vector_entry serror_aarch32 - no_ret plat_panic_handler + b plat_panic_handler check_vector_size serror_aarch32 -- cgit v1.2.3