fast_trap/hal/mod.rs
1#[cfg(not(doc))]
2mod riscv;
3
4#[cfg(not(doc))]
5pub use riscv::*;
6
7mod doc {
8 #![allow(unused)]
9
10 /// 设置全局陷入入口。
11 ///
12 /// # Safety
13 ///
14 /// 这个函数操作硬件寄存器,寄存器里原本的值将丢弃。
15 pub unsafe fn load_direct_trap_entry() {}
16
17 /// 把当前栈复用为陷入栈,预留 Handler 空间。
18 ///
19 /// # Safety
20 ///
21 /// 裸指针,直接移动 sp,只能在纯汇编环境调用。
22 pub unsafe extern "C" fn reuse_stack_for_trap() {}
23
24 /// 模拟一个 `cause` 类的陷入。
25 ///
26 /// # Safety
27 ///
28 /// 如同发生一个陷入。
29 pub fn soft_trap(cause: usize) {}
30
31 /// 陷入处理例程。
32 ///
33 /// # Safety
34 ///
35 /// 不要直接调用这个函数。暴露它仅仅是为了提供其入口的符号链接。
36 pub unsafe extern "C" fn trap_entry() {}
37
38 /// 陷入上下文。
39 ///
40 /// 保存了陷入时的寄存器状态。包括所有通用寄存器和 `pc`。
41 pub struct FlowContext {}
42
43 impl FlowContext {
44 /// 零初始化。
45 pub const ZERO: Self = Self {};
46 }
47}
48
49#[cfg(doc)]
50pub use doc::*;