xref: /DragonOS/kernel/src/arch/riscv64/interrupt/mod.rs (revision 4fda81ce81939d83b74c8042d6fb4223deff3685)
1*4fda81ceSLoGin use crate::exception::{InterruptArch, IrqFlags, IrqFlagsGuard};
2*4fda81ceSLoGin 
3*4fda81ceSLoGin pub mod ipi;
4*4fda81ceSLoGin 
5*4fda81ceSLoGin pub struct RiscV64InterruptArch;
6*4fda81ceSLoGin 
7*4fda81ceSLoGin impl InterruptArch for RiscV64InterruptArch {
8*4fda81ceSLoGin     unsafe fn interrupt_enable() {
9*4fda81ceSLoGin         unimplemented!("RiscV64InterruptArch::interrupt_enable")
10*4fda81ceSLoGin     }
11*4fda81ceSLoGin 
12*4fda81ceSLoGin     unsafe fn interrupt_disable() {
13*4fda81ceSLoGin         unimplemented!("RiscV64InterruptArch::interrupt_disable")
14*4fda81ceSLoGin     }
15*4fda81ceSLoGin 
16*4fda81ceSLoGin     fn is_irq_enabled() -> bool {
17*4fda81ceSLoGin         unimplemented!("RiscV64InterruptArch::is_irq_enabled")
18*4fda81ceSLoGin     }
19*4fda81ceSLoGin 
20*4fda81ceSLoGin     unsafe fn save_and_disable_irq() -> IrqFlagsGuard {
21*4fda81ceSLoGin         unimplemented!("RiscV64InterruptArch::save_and_disable_irq")
22*4fda81ceSLoGin     }
23*4fda81ceSLoGin 
24*4fda81ceSLoGin     unsafe fn restore_irq(flags: IrqFlags) {
25*4fda81ceSLoGin         unimplemented!("RiscV64InterruptArch::restore_irq")
26*4fda81ceSLoGin     }
27*4fda81ceSLoGin }
28*4fda81ceSLoGin 
29*4fda81ceSLoGin /// 中断栈帧结构体
30*4fda81ceSLoGin #[repr(C)]
31*4fda81ceSLoGin #[derive(Debug, Copy, Clone)]
32*4fda81ceSLoGin pub struct TrapFrame {
33*4fda81ceSLoGin     // todo
34*4fda81ceSLoGin }
35*4fda81ceSLoGin 
36*4fda81ceSLoGin impl TrapFrame {
37*4fda81ceSLoGin     /// 判断当前中断是否来自用户模式
38*4fda81ceSLoGin     pub fn from_user(&self) -> bool {
39*4fda81ceSLoGin         unimplemented!("TrapFrame::from_user")
40*4fda81ceSLoGin     }
41*4fda81ceSLoGin }
42