aarch32_cpu/register/
dracr.rs1use arbitrary_int::u3;
4
5use crate::register::{SysReg, SysRegRead, SysRegWrite};
6
7#[bitbybit::bitfield(u32, debug, defmt_bitfields(feature = "defmt"))]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub struct Dracr {
11 #[bits(12..=12, rw)]
13 nx: bool,
14 #[bits(8..=10, rw)]
16 ap: u3,
17 #[bits(3..=5, rw)]
19 tex: u3,
20 #[bits(2..=2, rw)]
22 s: bool,
23 #[bits(1..=1, rw)]
25 c: bool,
26 #[bits(0..=0, rw)]
28 b: bool,
29}
30
31impl SysReg for Dracr {
32 const CP: u32 = 15;
33 const CRN: u32 = 6;
34 const OP1: u32 = 0;
35 const CRM: u32 = 1;
36 const OP2: u32 = 4;
37}
38
39impl crate::register::SysRegRead for Dracr {}
40
41impl Dracr {
42 #[inline]
43 pub fn read() -> Dracr {
47 unsafe { Self::new_with_raw_value(<Self as SysRegRead>::read_raw()) }
48 }
49}
50
51impl crate::register::SysRegWrite for Dracr {}
52
53impl Dracr {
54 #[inline]
55 pub fn write(value: Dracr) {
59 unsafe { <Self as SysRegWrite>::write_raw(value.raw_value()) }
60 }
61}