use crate::register::{Register,Register32,Register64};
pub struct Csr<R: Register> {
pub mhartid: R,
pub mtvec: R,
pub medeleg: R,
pub mideleg: R,
pub mie: R,
pub mip: R,
pub mcycle: Register64,
pub mcounteren: Register32,
pub mscratch: R,
pub mepc: R,
pub mcause: R,
pub mtval: R,
}
impl<R: Register> Csr<R> {
pub fn new(hart: R::Unsigned, trap_address: R::Unsigned) -> Self {
Self {
mhartid: R::from_unsigned(hart),
mtvec: R::from_unsigned(trap_address),
medeleg: Default::default(),
mideleg: Default::default(),
mie: Default::default(),
mip: Default::default(),
mcycle: Default::default(),
mcounteren: Default::default(),
mscratch: Default::default(),
mepc: Default::default(),
mcause: Default::default(),
mtval: Default::default()
}
}
}