From c61060e673111e324c6d6968f6f62907c1ee5216 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Mon, 23 Oct 2017 15:46:43 +0800 Subject: [PATCH] panic handler: Print correct PC & backtrace for debug exceptions --- components/freertos/xtensa_vector_defaults.S | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/components/freertos/xtensa_vector_defaults.S b/components/freertos/xtensa_vector_defaults.S index c800a09ed..592dc323b 100644 --- a/components/freertos/xtensa_vector_defaults.S +++ b/components/freertos/xtensa_vector_defaults.S @@ -34,8 +34,14 @@ The default behaviour is to just exit the interrupt or call the panic handler on _xt_debugexception: movi a0,PANIC_RSN_DEBUGEXCEPTION wsr a0,EXCCAUSE + /* _xt_panic assumes a level 1 exception. As we're + crashing anyhow, copy EPC & EXCSAVE from DEBUGLEVEL + to level 1. */ + rsr a0,(EPC + XCHAL_DEBUGLEVEL) + wsr a0,EPC_1 + rsr a0,(EXCSAVE + XCHAL_DEBUGLEVEL) + wsr a0,EXCSAVE_1 call0 _xt_panic /* does not return */ - rsr a0, EXCSAVE+XCHAL_DEBUGLEVEL rfi XCHAL_DEBUGLEVEL #endif /* Debug exception */