1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use core::panic::PanicInfo;
#[cfg(not(feature = "user_lib"))]
use crate::arch::riscv_sbi::power::*;

#[cfg(not(feature = "user_lib"))]
fn panic_print_sys_info() {
    
}

#[panic_handler]
fn panic(_panic: &PanicInfo<'_>) -> ! {
    if let Some(location) = _panic.location() {
        crate::println!(
            "Panicked at {}:{} {}",
            location.file(),
            location.line(),
            _panic.message().unwrap()
        );
    } else {
        crate::println!("Panicked: {}", _panic.message().unwrap());
    }
    #[cfg(not(feature = "user_lib"))]
    panic_print_sys_info();
    #[cfg(not(feature = "user_lib"))]
    finalize(Operation::Shutdown);
    #[cfg(any(feature = "user_lib"))]
    loop {};
}