1use hal::Machinelike;
2
3#[unsafe(no_mangle)]
4pub extern "C" fn handle_hard_fault(stack: *const usize, initial_fp: *const usize) -> ! {
5 let backtrace = hal::Machine::backtrace(initial_fp, stack);
6
7 panic!("A hard fault has been triggered.\n{}", backtrace);
9}
10
11#[unsafe(no_mangle)]
12pub extern "C" fn handle_mem_manage_fault(stack: *const usize, initial_fp: *const usize) -> ! {
13 let backtrace = hal::Machine::backtrace(initial_fp, stack);
14 let fault_status = hal::Machine::get_fault_status(hal::Fault::MemManage);
15
16 panic!(
18 "A memory management fault has been triggered.\n{}{}",
19 backtrace, fault_status
20 );
21}
22
23#[unsafe(no_mangle)]
24pub extern "C" fn handle_bus_fault(stack: *const usize, initial_fp: *const usize) -> ! {
25 let backtrace = hal::Machine::backtrace(initial_fp, stack);
26 let fault_status = hal::Machine::get_fault_status(hal::Fault::Bus);
27
28 panic!(
30 "A bus fault has been triggered.\n{}{}",
31 backtrace, fault_status
32 );
33}
34
35#[unsafe(no_mangle)]
36pub extern "C" fn handle_usage_fault(stack: *const usize, initial_fp: *const usize) -> ! {
37 let backtrace = hal::Machine::backtrace(initial_fp, stack);
38 let fault_status = hal::Machine::get_fault_status(hal::Fault::Usage);
39
40 panic!(
42 "A usage fault has been triggered.\n{}{}",
43 backtrace, fault_status
44 );
45}