First commit

This commit is contained in:
2026-01-22 18:09:14 +01:00
committed by Julien THILLARD
commit 7a25e89d4c
21 changed files with 609 additions and 0 deletions

22
src/riscv.rs Normal file
View File

@@ -0,0 +1,22 @@
use core::arch::asm;
const MSTATUS_MIE: usize = 0x8;
pub fn get_interrupt_state() -> bool {
let res: u64;
unsafe { asm!("csrr {}, mstatus", out(reg) res) };
(res & MSTATUS_MIE as u64) != 0
}
pub fn enable_interrupt() {
unsafe { asm!("csrs mstatus, {}", in(reg) MSTATUS_MIE) };
}
pub fn disable_interrupt() {
unsafe { asm!("csrc mstatus, {}", in(reg) MSTATUS_MIE) };
}
pub fn restore_interrupt(previous_state: bool) {
if previous_state {
enable_interrupt();
} else {
disable_interrupt();
}
}