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