Skip to content

Commit 8fad75f

Browse files
committed
riscv: add medeleg unit tests
Adds basic unit tests for the `medeleg` register.
1 parent 8b99657 commit 8fad75f

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

riscv/src/register/medeleg.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,41 @@ set_clear_csr!(
126126
set_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

Comments
 (0)