@@ -126,3 +126,41 @@ set_clear_csr!(
126126set_clear_csr ! (
127127 /// Store/AMO Page Fault Delegate
128128 , set_store_page_fault, clear_store_page_fault, 1 << 15 ) ;
129+
130+ #[ cfg( test) ]
131+ mod tests {
132+ use super :: * ;
133+
134+ macro_rules! test_field {
135+ ( $reg: ident, $field: ident) => { {
136+ $crate:: paste! {
137+ assert!( !$reg. $field( ) ) ;
138+
139+ $reg. [ <set_ $field>] ( true ) ;
140+ assert!( $reg. $field( ) ) ;
141+
142+ $reg. [ <set_ $field>] ( false ) ;
143+ assert!( !$reg. $field( ) ) ;
144+ }
145+ } } ;
146+ }
147+
148+ #[ test]
149+ fn test_medeleg ( ) {
150+ let mut m = Medeleg :: from_bits ( 0 ) ;
151+
152+ test_field ! ( m, instruction_misaligned) ;
153+ test_field ! ( m, instruction_fault) ;
154+ test_field ! ( m, illegal_instruction) ;
155+ test_field ! ( m, breakpoint) ;
156+ test_field ! ( m, load_misaligned) ;
157+ test_field ! ( m, load_fault) ;
158+ test_field ! ( m, store_misaligned) ;
159+ test_field ! ( m, store_fault) ;
160+ test_field ! ( m, user_env_call) ;
161+ test_field ! ( m, supervisor_env_call) ;
162+ test_field ! ( m, instruction_page_fault) ;
163+ test_field ! ( m, load_page_fault) ;
164+ test_field ! ( m, store_page_fault) ;
165+ }
166+ }
0 commit comments