]> granicus.if.org Git - esp-idf/commitdiff
panic handler: Print correct PC & backtrace for debug exceptions
authorAngus Gratton <angus@espressif.com>
Mon, 23 Oct 2017 07:46:43 +0000 (15:46 +0800)
committerAngus Gratton <gus@projectgus.com>
Mon, 23 Oct 2017 07:46:43 +0000 (15:46 +0800)
components/freertos/xtensa_vector_defaults.S

index c800a09eda30e0167e6bee9786fb5f8f03b5e206..592dc323bd2928526b40dfca6897739ad1f34125 100644 (file)
@@ -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 */