use bit_field::BitField;
use riscv::{clear, read_csr_as, set, write_csr};
#[derive(Copy, Clone, Debug)]
pub struct Vstvec {
bits: usize,
}
impl Vstvec {
#[inline]
pub fn bits(&self) -> usize {
self.bits
}
#[inline]
pub fn from_bits(x: usize) -> Self {
Vstvec { bits: x }
}
#[inline]
pub unsafe fn write(&self) {
unsafe { _write(self.bits) };
}
#[inline]
pub fn base(&self) -> usize {
self.bits.get_bits(2..64)
}
#[inline]
pub fn set_base(&mut self, val: usize) {
self.bits.set_bits(2..64, val);
}
#[inline]
pub fn mode(&self) -> usize {
self.bits.get_bits(0..2)
}
#[inline]
pub fn set_mode(&mut self, val: usize) {
self.bits.set_bits(0..2, val);
}
}
read_csr_as!(Vstvec, 0x205);
write_csr!(0x205);
set!(0x205);
clear!(0x205);