kernel/arch/riscv64/trap/mod.rs
1use core::arch::asm;
2
3use crate::println;
4
5use super::Trapframe;
6
7pub mod interrupt;
8pub mod exception;
9pub mod kernel;
10pub mod user;
11
12pub fn print_traplog(tf: &Trapframe) {
13 let cause: usize;
14 let tval: usize;
15 unsafe {
16 asm!("csrr {}, scause", out(reg) cause);
17 asm!("csrr {}, stval", out(reg) tval);
18 }
19 println!("trapframe:\n{:#x?}", tf);
20 println!("cause: {}", cause);
21 println!("tval: 0x{:x}", tval);
22}