diff --git a/src/register/mip.rs b/src/register/mip.rs index 6633088..1a4cf82 100644 --- a/src/register/mip.rs +++ b/src/register/mip.rs @@ -71,3 +71,30 @@ impl Mip { } read_csr_as!(Mip, 0x344, __read_mip); +set!(0x344, __set_mip); +clear!(0x344, __clear_mip); + +set_clear_csr!( + /// User Software Interrupt Pending + , set_usoft, clear_usoft, 1 << 0); +set_clear_csr!( + /// Supervisor Software Interrupt Pending + , set_ssoft, clear_ssoft, 1 << 1); +set_clear_csr!( + /// Machine Software Interrupt Pending + , set_msoft, clear_msoft, 1 << 3); +set_clear_csr!( + /// User Timer Interrupt Pending + , set_utimer, clear_utimer, 1 << 4); +set_clear_csr!( + /// Supervisor Timer Interrupt Pending + , set_stimer, clear_stimer, 1 << 5); +set_clear_csr!( + /// Machine Timer Interrupt Pending + , set_mtimer, clear_mtimer, 1 << 7); +set_clear_csr!( + /// User External Interrupt Pending + , set_uext, clear_uext, 1 << 8); +set_clear_csr!( + /// Supervisor External Interrupt Pending + , set_sext, clear_sext, 1 << 9); diff --git a/src/register/satp.rs b/src/register/satp.rs index ffd347c..d1821d3 100644 --- a/src/register/satp.rs +++ b/src/register/satp.rs @@ -87,7 +87,7 @@ pub enum Mode { } read_csr_as!(Satp, 0x180, __read_satp); -write_csr!(0x180, __write_satp); +write_csr_as_usize!(0x180, __write_satp); #[inline] #[cfg(riscv32)]