File tree 2 files changed +33
-24
lines changed
2 files changed +33
-24
lines changed Original file line number Diff line number Diff line change @@ -36,6 +36,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
36
36
- Use CSR helper macros to define ` scause ` field types
37
37
- Use CSR helper macros to define ` sie ` register
38
38
- Use CSR helper macros to define ` scounteren ` field types
39
+ - Use CSR helper macros to define ` sip ` register
39
40
40
41
## [ v0.12.1] - 2024-10-20
41
42
Original file line number Diff line number Diff line change 1
1
//! sip register
2
2
3
- /// sip register
4
- # [ derive ( Clone , Copy , Debug ) ]
5
- pub struct Sip {
6
- bits : usize ,
3
+ read_write_csr ! {
4
+ /// sip register
5
+ Sip : 0x144 ,
6
+ mask : 0x222 ,
7
7
}
8
8
9
- impl Sip {
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
+ Sip ,
16
11
/// Supervisor Software Interrupt Pending
17
- #[ inline]
18
- pub fn ssoft ( & self ) -> bool {
19
- self . bits & ( 1 << 1 ) != 0
20
- }
12
+ ssoft: 1 ,
13
+ }
21
14
15
+ read_only_csr_field ! {
16
+ Sip ,
22
17
/// Supervisor Timer Interrupt Pending
23
- #[ inline]
24
- pub fn stimer ( & self ) -> bool {
25
- self . bits & ( 1 << 5 ) != 0
26
- }
18
+ stimer: 5 ,
19
+ }
27
20
21
+ read_only_csr_field ! {
22
+ Sip ,
28
23
/// Supervisor External Interrupt Pending
29
- #[ inline]
30
- pub fn sext ( & self ) -> bool {
31
- self . bits & ( 1 << 9 ) != 0
32
- }
24
+ sext: 9 ,
33
25
}
34
26
35
- read_csr_as ! ( Sip , 0x144 ) ;
36
27
set ! ( 0x144 ) ;
37
28
clear ! ( 0x144 ) ;
38
29
39
30
set_clear_csr ! (
40
31
/// Supervisor Software Interrupt Pending
41
32
, set_ssoft, clear_ssoft, 1 << 1 ) ;
33
+
34
+ #[ cfg( test) ]
35
+ mod tests {
36
+ use super :: * ;
37
+
38
+ #[ test]
39
+ fn test_sip ( ) {
40
+ let mut sip = Sip :: from_bits ( 0 ) ;
41
+
42
+ test_csr_field ! ( sip, ssoft) ;
43
+ assert ! ( !sip. stimer( ) ) ;
44
+ assert ! ( !sip. sext( ) ) ;
45
+
46
+ assert ! ( Sip :: from_bits( 1 << 5 ) . stimer( ) ) ;
47
+ assert ! ( Sip :: from_bits( 1 << 9 ) . sext( ) ) ;
48
+ }
49
+ }
You can’t perform that action at this time.
0 commit comments