use bit_field::BitField;
use riscv::{clear, read_csr_as, set, set_clear_csr, write_csr};
#[derive(Copy, Clone, Debug)]
pub struct Vsie {
bits: usize,
}
impl Vsie {
#[inline]
pub fn bits(&self) -> usize {
self.bits
}
#[inline]
pub fn from_bits(x: usize) -> Self {
Vsie { bits: x }
}
#[inline]
pub unsafe fn write(&self) {
unsafe { _write(self.bits) };
}
#[inline]
pub fn ssie(&self) -> bool {
self.bits.get_bit(1)
}
#[inline]
pub fn set_ssie(&mut self, val: bool) {
self.bits.set_bit(1, val);
}
#[inline]
pub fn stie(&self) -> bool {
self.bits.get_bit(5)
}
#[inline]
pub fn set_stie(&mut self, val: bool) {
self.bits.set_bit(5, val);
}
#[inline]
pub fn seie(&self) -> bool {
self.bits.get_bit(9)
}
#[inline]
pub fn set_seie(&mut self, val: bool) {
self.bits.set_bit(9, val);
}
}
read_csr_as!(Vsie, 0x204);
write_csr!(0x204);
set!(0x204);
clear!(0x204);
set_clear_csr!(
, set_ssie, clear_ssie, 1 << 1);
set_clear_csr!(
, set_stie, clear_stie, 1 << 5);
set_clear_csr!(
, set_seie, clear_seie, 1 << 9);