Просмотр исходного кода

[libcpu/virt64] robust backtrace

wangxiaoyao 3 лет назад
Родитель
Сommit
72011b422b
1 измененных файлов с 3 добавлено и 2 удалено
  1. 3 2
      libcpu/risc-v/virt64/backtrace.c

+ 3 - 2
libcpu/risc-v/virt64/backtrace.c

@@ -58,13 +58,13 @@ void rt_hw_backtrace(rt_uint32_t *ffp, rt_ubase_t sepc)
         }
 
         ra = fp - 1;
-        if (!rt_hw_mmu_v2p(&mmu_info, ra) || *ra < vas || *ra > vae)
+        if (!_rt_hw_mmu_v2p(&mmu_info, ra) || *ra < vas || *ra > vae)
             break;
 
         rt_kprintf(" %p", *ra - 0x04);
 
         fp = fp - 2;
-        if (!rt_hw_mmu_v2p(&mmu_info, fp))
+        if (!_rt_hw_mmu_v2p(&mmu_info, fp))
             break;
         fp = (rt_ubase_t *)(*fp);
         if (!fp)
@@ -76,6 +76,7 @@ void rt_hw_backtrace(rt_uint32_t *ffp, rt_ubase_t sepc)
 
 static void _assert_backtrace_cb(const char *ex, const char *func, rt_size_t line)
 {
+    rt_hw_interrupt_disable();
     rt_kprintf("(%s) assertion failed at function:%s, line number:%d \n", ex, func, line);
 
     rt_hw_backtrace(0, 0);