use core::arch::asm;
pub type Flags = u8;
#[inline]
pub fn read_disable() -> Flags {
let flags: Flags;
unsafe {
asm!(
"csrrci {rd}, sstatus, 0b10",
rd = out(reg) flags,
options(preserves_flags, nostack)
);
}
flags
}
#[inline]
pub fn restore(flags: Flags) {
unsafe {
asm!(
"csrs sstatus, {rs1}",
rs1 = in(reg) flags,
options(preserves_flags, nostack)
);
}
}