read_write_csr! {
Medeleg: 0x302,
mask: 0xb3ff,
}
read_write_csr_field! {
Medeleg,
instruction_misaligned: 0,
}
read_write_csr_field! {
Medeleg,
instruction_fault: 1,
}
read_write_csr_field! {
Medeleg,
illegal_instruction: 2,
}
read_write_csr_field! {
Medeleg,
breakpoint: 3,
}
read_write_csr_field! {
Medeleg,
load_misaligned: 4,
}
read_write_csr_field! {
Medeleg,
load_fault: 5,
}
read_write_csr_field! {
Medeleg,
store_misaligned: 6,
}
read_write_csr_field! {
Medeleg,
store_fault: 7,
}
read_write_csr_field! {
Medeleg,
user_env_call: 8,
}
read_write_csr_field! {
Medeleg,
supervisor_env_call: 9,
}
read_write_csr_field! {
Medeleg,
instruction_page_fault: 12,
}
read_write_csr_field! {
Medeleg,
load_page_fault: 13,
}
read_write_csr_field! {
Medeleg,
store_page_fault: 15,
}
set!(0x302);
clear!(0x302);
set_clear_csr!(
, set_instruction_misaligned, clear_instruction_misaligned, 1 << 0);
set_clear_csr!(
, set_instruction_fault, clear_instruction_fault, 1 << 1);
set_clear_csr!(
, set_illegal_instruction, clear_illegal_instruction, 1 << 2);
set_clear_csr!(
, set_breakpoint, clear_breakpoint, 1 << 3);
set_clear_csr!(
, set_load_misaligned, clear_load_misaligned, 1 << 4);
set_clear_csr!(
, set_load_fault, clear_load_fault, 1 << 5);
set_clear_csr!(
, set_store_misaligned, clear_store_misaligned, 1 << 6);
set_clear_csr!(
, set_store_fault, clear_store_fault, 1 << 7);
set_clear_csr!(
, set_user_env_call, clear_user_env_call, 1 << 8);
set_clear_csr!(
, set_supervisor_env_call, clear_supervisor_env_call, 1 << 9);
set_clear_csr!(
, set_instruction_page_fault, clear_instruction_page_fault, 1 << 12);
set_clear_csr!(
, set_load_page_fault, clear_load_page_fault, 1 << 13);
set_clear_csr!(
, set_store_page_fault, clear_store_page_fault, 1 << 15);
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_medeleg() {
let mut m = Medeleg::from_bits(0);
test_csr_field!(m, instruction_misaligned);
test_csr_field!(m, instruction_fault);
test_csr_field!(m, illegal_instruction);
test_csr_field!(m, breakpoint);
test_csr_field!(m, load_misaligned);
test_csr_field!(m, load_fault);
test_csr_field!(m, store_misaligned);
test_csr_field!(m, store_fault);
test_csr_field!(m, user_env_call);
test_csr_field!(m, supervisor_env_call);
test_csr_field!(m, instruction_page_fault);
test_csr_field!(m, load_page_fault);
test_csr_field!(m, store_page_fault);
}
}