Skip to content

Commit f64bd1c

Browse files
committed
riscv: define mideleg using CSR macros
Uses CSR helper macros to define the `mideleg` register.
1 parent 275facc commit f64bd1c

File tree

1 file changed

+15
-24
lines changed

1 file changed

+15
-24
lines changed

riscv/src/register/mideleg.rs

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,29 @@
11
//! mideleg register
22
3-
/// mideleg register
4-
#[derive(Clone, Copy, Debug)]
5-
pub struct Mideleg {
6-
bits: usize,
3+
read_write_csr! {
4+
/// `mideleg` register
5+
Mideleg: 0x303,
6+
mask: 0x222,
77
}
88

9-
impl Mideleg {
10-
/// Returns the contents of the register as raw bits
11-
#[inline]
12-
pub fn bits(&self) -> usize {
13-
self.bits
14-
}
15-
9+
read_write_csr_field! {
10+
Mideleg,
1611
/// Supervisor Software Interrupt Delegate
17-
#[inline]
18-
pub fn ssoft(&self) -> bool {
19-
self.bits & (1 << 1) != 0
20-
}
12+
ssoft: 1,
13+
}
2114

15+
read_write_csr_field! {
16+
Mideleg,
2217
/// Supervisor Timer Interrupt Delegate
23-
#[inline]
24-
pub fn stimer(&self) -> bool {
25-
self.bits & (1 << 5) != 0
26-
}
18+
stimer: 5,
19+
}
2720

21+
read_write_csr_field! {
22+
Mideleg,
2823
/// Supervisor External Interrupt Delegate
29-
#[inline]
30-
pub fn sext(&self) -> bool {
31-
self.bits & (1 << 9) != 0
32-
}
24+
sext: 9,
3325
}
3426

35-
read_csr_as!(Mideleg, 0x303);
3627
set!(0x303);
3728
clear!(0x303);
3829

0 commit comments

Comments
 (0)