pub use super::mstatus::Endianness;
read_write_csr! {
Mstatush: 0x310,
mask: 0x30,
}
read_write_csr_field! {
Mstatush,
sbe,
Endianness: [4:4],
}
read_write_csr_field! {
Mstatush,
mbe,
Endianness: [5:5],
}
set_rv32!(0x310);
clear_rv32!(0x310);
#[inline]
pub unsafe fn set_sbe(endianness: Endianness) {
match endianness {
Endianness::BigEndian => _set(1 << 4),
Endianness::LittleEndian => _clear(1 << 4),
}
}
#[inline]
pub unsafe fn set_mbe(endianness: Endianness) {
match endianness {
Endianness::BigEndian => _set(1 << 5),
Endianness::LittleEndian => _clear(1 << 5),
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_mstatush() {
let mut m = Mstatush::from_bits(0);
[Endianness::LittleEndian, Endianness::BigEndian]
.into_iter()
.for_each(|endianness| {
test_csr_field!(m, sbe: endianness);
test_csr_field!(m, mbe: endianness);
});
}
}