summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bl31/aarch64/runtime_exceptions.S23
-rw-r--r--bl32/tsp/aarch64/tsp_exceptions.S28
-rw-r--r--common/aarch32/debug.S2
-rw-r--r--common/aarch64/debug.S4
4 files changed, 29 insertions, 28 deletions
diff --git a/bl31/aarch64/runtime_exceptions.S b/bl31/aarch64/runtime_exceptions.S
index 45b0213d..d8fbb9b2 100644
--- a/bl31/aarch64/runtime_exceptions.S
+++ b/bl31/aarch64/runtime_exceptions.S
@@ -49,7 +49,8 @@
b.eq smc_handler64
/* Other kinds of synchronous exceptions are not handled */
- no_ret report_unhandled_exception
+ ldr x30, [sp, #CTX_GPREGS_OFFSET + CTX_GPREG_LR]
+ b report_unhandled_exception
.endm
@@ -152,7 +153,7 @@ vector_base runtime_exceptions
*/
vector_entry sync_exception_sp_el0
/* We don't expect any synchronous exceptions from EL3 */
- no_ret report_unhandled_exception
+ b report_unhandled_exception
check_vector_size sync_exception_sp_el0
vector_entry irq_sp_el0
@@ -160,17 +161,17 @@ vector_entry irq_sp_el0
* EL3 code is non-reentrant. Any asynchronous exception is a serious
* error. Loop infinitely.
*/
- no_ret report_unhandled_interrupt
+ b report_unhandled_interrupt
check_vector_size irq_sp_el0
vector_entry fiq_sp_el0
- no_ret report_unhandled_interrupt
+ b report_unhandled_interrupt
check_vector_size fiq_sp_el0
vector_entry serror_sp_el0
- no_ret report_unhandled_exception
+ b report_unhandled_exception
check_vector_size serror_sp_el0
/* ---------------------------------------------------------------------
@@ -184,19 +185,19 @@ vector_entry sync_exception_sp_elx
* synchronous exception. There is a high probability that SP_EL3 is
* corrupted.
*/
- no_ret report_unhandled_exception
+ b report_unhandled_exception
check_vector_size sync_exception_sp_elx
vector_entry irq_sp_elx
- no_ret report_unhandled_interrupt
+ b report_unhandled_interrupt
check_vector_size irq_sp_elx
vector_entry fiq_sp_elx
- no_ret report_unhandled_interrupt
+ b report_unhandled_interrupt
check_vector_size fiq_sp_elx
vector_entry serror_sp_elx
- no_ret report_unhandled_exception
+ b report_unhandled_exception
check_vector_size serror_sp_elx
/* ---------------------------------------------------------------------
@@ -226,7 +227,7 @@ vector_entry serror_aarch64
* SError exceptions from lower ELs are not currently supported.
* Report their occurrence.
*/
- no_ret report_unhandled_exception
+ b report_unhandled_exception
check_vector_size serror_aarch64
/* ---------------------------------------------------------------------
@@ -256,7 +257,7 @@ vector_entry serror_aarch32
* SError exceptions from lower ELs are not currently supported.
* Report their occurrence.
*/
- no_ret report_unhandled_exception
+ b report_unhandled_exception
check_vector_size serror_aarch32
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
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