Skip to content

Commit e91761f

Browse files
committed
riscv: move CSR test macro
Moves the CSR test helper macro to `register::macros` module for re-use. The test helper macro can be expanded as needed, but is not intended for external use.
1 parent f64bd1c commit e91761f

File tree

2 files changed

+29
-27
lines changed

2 files changed

+29
-27
lines changed

riscv/src/register/macros.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,3 +1059,19 @@ macro_rules! write_only_csr_field {
10591059
}
10601060
};
10611061
}
1062+
1063+
#[cfg(test)]
1064+
#[macro_export]
1065+
macro_rules! test_csr_field {
1066+
($reg:ident, $field:ident) => {{
1067+
$crate::paste! {
1068+
assert!(!$reg.$field());
1069+
1070+
$reg.[<set_ $field>](true);
1071+
assert!($reg.$field());
1072+
1073+
$reg.[<set_ $field>](false);
1074+
assert!(!$reg.$field());
1075+
}
1076+
}};
1077+
}

riscv/src/register/medeleg.rs

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -131,36 +131,22 @@ set_clear_csr!(
131131
mod tests {
132132
use super::*;
133133

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-
148134
#[test]
149135
fn test_medeleg() {
150136
let mut m = Medeleg::from_bits(0);
151137

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);
138+
test_csr_field!(m, instruction_misaligned);
139+
test_csr_field!(m, instruction_fault);
140+
test_csr_field!(m, illegal_instruction);
141+
test_csr_field!(m, breakpoint);
142+
test_csr_field!(m, load_misaligned);
143+
test_csr_field!(m, load_fault);
144+
test_csr_field!(m, store_misaligned);
145+
test_csr_field!(m, store_fault);
146+
test_csr_field!(m, user_env_call);
147+
test_csr_field!(m, supervisor_env_call);
148+
test_csr_field!(m, instruction_page_fault);
149+
test_csr_field!(m, load_page_fault);
150+
test_csr_field!(m, store_page_fault);
165151
}
166152
}

0 commit comments

Comments
 (0)