From caef2a9f84dccb366c0a11dc7cc4e09cb5939abc Mon Sep 17 00:00:00 2001 From: pca006132 Date: Thu, 16 Jul 2020 16:24:27 +0800 Subject: [PATCH] runtime/panic: prevent nested panic and added core ID in panic msg. --- src/runtime/src/panic.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/runtime/src/panic.rs b/src/runtime/src/panic.rs index ab9b8d22..a972be19 100644 --- a/src/runtime/src/panic.rs +++ b/src/runtime/src/panic.rs @@ -1,8 +1,21 @@ use libboard_zynq::{print, println}; +use libregister::RegisterR; +use libcortex_a9::regs::MPIDR; use unwind::backtrace; +static mut PANICKED: [bool; 2] = [false; 2]; + #[panic_handler] fn panic(info: &core::panic::PanicInfo) -> ! { + let id = MPIDR.read().cpu_id() as usize; + print!("Core {} ", id); + unsafe { + if PANICKED[id] { + println!("nested panic!"); + loop {} + } + PANICKED[id] = true; + } print!("panic at "); if let Some(location) = info.location() { print!("{}:{}:{}", location.file(), location.line(), location.column());