Commit 096b7af7 authored by davidcunado-arm's avatar davidcunado-arm Committed by GitHub
Browse files

Merge pull request #1054 from jwerner-chromium/JW_crash_x30

Fix x30 reporting for unhandled exceptions
parents 2458e37a 4d91838b
...@@ -49,7 +49,8 @@ ...@@ -49,7 +49,8 @@
b.eq smc_handler64 b.eq smc_handler64
/* Other kinds of synchronous exceptions are not handled */ /* 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 .endm
...@@ -152,7 +153,7 @@ vector_base runtime_exceptions ...@@ -152,7 +153,7 @@ vector_base runtime_exceptions
*/ */
vector_entry sync_exception_sp_el0 vector_entry sync_exception_sp_el0
/* We don't expect any synchronous exceptions from EL3 */ /* 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 check_vector_size sync_exception_sp_el0
vector_entry irq_sp_el0 vector_entry irq_sp_el0
...@@ -160,17 +161,17 @@ 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 * EL3 code is non-reentrant. Any asynchronous exception is a serious
* error. Loop infinitely. * error. Loop infinitely.
*/ */
no_ret report_unhandled_interrupt b report_unhandled_interrupt
check_vector_size irq_sp_el0 check_vector_size irq_sp_el0
vector_entry fiq_sp_el0 vector_entry fiq_sp_el0
no_ret report_unhandled_interrupt b report_unhandled_interrupt
check_vector_size fiq_sp_el0 check_vector_size fiq_sp_el0
vector_entry serror_sp_el0 vector_entry serror_sp_el0
no_ret report_unhandled_exception b report_unhandled_exception
check_vector_size serror_sp_el0 check_vector_size serror_sp_el0
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------
...@@ -184,19 +185,19 @@ vector_entry sync_exception_sp_elx ...@@ -184,19 +185,19 @@ vector_entry sync_exception_sp_elx
* synchronous exception. There is a high probability that SP_EL3 is * synchronous exception. There is a high probability that SP_EL3 is
* corrupted. * corrupted.
*/ */
no_ret report_unhandled_exception b report_unhandled_exception
check_vector_size sync_exception_sp_elx check_vector_size sync_exception_sp_elx
vector_entry irq_sp_elx vector_entry irq_sp_elx
no_ret report_unhandled_interrupt b report_unhandled_interrupt
check_vector_size irq_sp_elx check_vector_size irq_sp_elx
vector_entry fiq_sp_elx vector_entry fiq_sp_elx
no_ret report_unhandled_interrupt b report_unhandled_interrupt
check_vector_size fiq_sp_elx check_vector_size fiq_sp_elx
vector_entry serror_sp_elx vector_entry serror_sp_elx
no_ret report_unhandled_exception b report_unhandled_exception
check_vector_size serror_sp_elx check_vector_size serror_sp_elx
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------
...@@ -226,7 +227,7 @@ vector_entry serror_aarch64 ...@@ -226,7 +227,7 @@ vector_entry serror_aarch64
* SError exceptions from lower ELs are not currently supported. * SError exceptions from lower ELs are not currently supported.
* Report their occurrence. * Report their occurrence.
*/ */
no_ret report_unhandled_exception b report_unhandled_exception
check_vector_size serror_aarch64 check_vector_size serror_aarch64
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------
...@@ -256,7 +257,7 @@ vector_entry serror_aarch32 ...@@ -256,7 +257,7 @@ vector_entry serror_aarch32
* SError exceptions from lower ELs are not currently supported. * SError exceptions from lower ELs are not currently supported.
* Report their occurrence. * Report their occurrence.
*/ */
no_ret report_unhandled_exception b report_unhandled_exception
check_vector_size serror_aarch32 check_vector_size serror_aarch32
......
...@@ -81,19 +81,19 @@ vector_base tsp_exceptions ...@@ -81,19 +81,19 @@ vector_base tsp_exceptions
* ----------------------------------------------------- * -----------------------------------------------------
*/ */
vector_entry sync_exception_sp_el0 vector_entry sync_exception_sp_el0
no_ret plat_panic_handler b plat_panic_handler
check_vector_size sync_exception_sp_el0 check_vector_size sync_exception_sp_el0
vector_entry irq_sp_el0 vector_entry irq_sp_el0
no_ret plat_panic_handler b plat_panic_handler
check_vector_size irq_sp_el0 check_vector_size irq_sp_el0
vector_entry fiq_sp_el0 vector_entry fiq_sp_el0
no_ret plat_panic_handler b plat_panic_handler
check_vector_size fiq_sp_el0 check_vector_size fiq_sp_el0
vector_entry serror_sp_el0 vector_entry serror_sp_el0
no_ret plat_panic_handler b plat_panic_handler
check_vector_size serror_sp_el0 check_vector_size serror_sp_el0
...@@ -103,7 +103,7 @@ vector_entry serror_sp_el0 ...@@ -103,7 +103,7 @@ vector_entry serror_sp_el0
* ----------------------------------------------------- * -----------------------------------------------------
*/ */
vector_entry sync_exception_sp_elx vector_entry sync_exception_sp_elx
no_ret plat_panic_handler b plat_panic_handler
check_vector_size sync_exception_sp_elx check_vector_size sync_exception_sp_elx
vector_entry irq_sp_elx vector_entry irq_sp_elx
...@@ -115,7 +115,7 @@ vector_entry fiq_sp_elx ...@@ -115,7 +115,7 @@ vector_entry fiq_sp_elx
check_vector_size fiq_sp_elx check_vector_size fiq_sp_elx
vector_entry serror_sp_elx vector_entry serror_sp_elx
no_ret plat_panic_handler b plat_panic_handler
check_vector_size serror_sp_elx check_vector_size serror_sp_elx
...@@ -125,19 +125,19 @@ vector_entry serror_sp_elx ...@@ -125,19 +125,19 @@ vector_entry serror_sp_elx
* ----------------------------------------------------- * -----------------------------------------------------
*/ */
vector_entry sync_exception_aarch64 vector_entry sync_exception_aarch64
no_ret plat_panic_handler b plat_panic_handler
check_vector_size sync_exception_aarch64 check_vector_size sync_exception_aarch64
vector_entry irq_aarch64 vector_entry irq_aarch64
no_ret plat_panic_handler b plat_panic_handler
check_vector_size irq_aarch64 check_vector_size irq_aarch64
vector_entry fiq_aarch64 vector_entry fiq_aarch64
no_ret plat_panic_handler b plat_panic_handler
check_vector_size fiq_aarch64 check_vector_size fiq_aarch64
vector_entry serror_aarch64 vector_entry serror_aarch64
no_ret plat_panic_handler b plat_panic_handler
check_vector_size serror_aarch64 check_vector_size serror_aarch64
...@@ -147,17 +147,17 @@ vector_entry serror_aarch64 ...@@ -147,17 +147,17 @@ vector_entry serror_aarch64
* ----------------------------------------------------- * -----------------------------------------------------
*/ */
vector_entry sync_exception_aarch32 vector_entry sync_exception_aarch32
no_ret plat_panic_handler b plat_panic_handler
check_vector_size sync_exception_aarch32 check_vector_size sync_exception_aarch32
vector_entry irq_aarch32 vector_entry irq_aarch32
no_ret plat_panic_handler b plat_panic_handler
check_vector_size irq_aarch32 check_vector_size irq_aarch32
vector_entry fiq_aarch32 vector_entry fiq_aarch32
no_ret plat_panic_handler b plat_panic_handler
check_vector_size fiq_aarch32 check_vector_size fiq_aarch32
vector_entry serror_aarch32 vector_entry serror_aarch32
no_ret plat_panic_handler b plat_panic_handler
check_vector_size serror_aarch32 check_vector_size serror_aarch32
...@@ -51,7 +51,7 @@ func do_panic ...@@ -51,7 +51,7 @@ func do_panic
1: 1:
mov lr, r6 mov lr, r6
no_ret plat_panic_handler b plat_panic_handler
endfunc do_panic endfunc do_panic
/*********************************************************** /***********************************************************
......
...@@ -175,6 +175,6 @@ el3_panic: ...@@ -175,6 +175,6 @@ el3_panic:
_panic_handler: _panic_handler:
/* Pass to plat_panic_handler the address from where el3_panic was /* Pass to plat_panic_handler the address from where el3_panic was
* called, not the address of the call from el3_panic. */ * called, not the address of the call from el3_panic. */
mov x30,x6 mov x30, x6
no_ret plat_panic_handler b plat_panic_handler
endfunc do_panic endfunc do_panic
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment