aarch32_cpu/register/
csselr.rs1use arbitrary_int::u3;
3
4use crate::register::{SysReg, SysRegRead, SysRegWrite};
5
6#[bitbybit::bitenum(u1, exhaustive = true)]
7#[derive(Debug, PartialEq, Eq)]
8#[cfg_attr(feature = "defmt", derive(defmt::Format))]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub enum CacheType {
12 DataOrUnified = 0,
14 Instruction = 1,
16}
17
18#[bitbybit::bitfield(u32, debug, defmt_fields(feature = "defmt"))]
20#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
21#[derive(PartialEq, Eq)]
22pub struct Csselr {
23 #[bits(1..=3, rw)]
25 level: u3,
26 #[bit(0, rw)]
28 cache_type: CacheType,
29}
30
31impl SysReg for Csselr {
32 const CP: u32 = 15;
33 const CRN: u32 = 0;
34 const OP1: u32 = 2;
35 const CRM: u32 = 0;
36 const OP2: u32 = 0;
37}
38
39impl crate::register::SysRegRead for Csselr {}
40
41impl Csselr {
42 #[inline]
43 pub fn read() -> Csselr {
45 Self::new_with_raw_value(<Self as SysRegRead>::read_raw())
46 }
47}
48
49impl crate::register::SysRegWrite for Csselr {}
50
51impl Csselr {
52 #[inline]
53 pub unsafe fn write(value: Self) {
59 unsafe {
60 <Self as SysRegWrite>::write_raw(value.raw_value());
61 }
62 }
63}