cortex_m/peripheral/mpu.rs
1//! Memory Protection Unit
2
3use volatile_register::{RO, RW};
4
5/// Register block for ARMv7-M
6#[cfg(not(armv8m))]
7#[repr(C)]
8pub struct RegisterBlock {
9 /// Type
10 pub _type: RO<u32>,
11 /// Control
12 pub ctrl: RW<u32>,
13 /// Region Number
14 pub rnr: RW<u32>,
15 /// Region Base Address
16 pub rbar: RW<u32>,
17 /// Region Attribute and Size
18 pub rasr: RW<u32>,
19 /// Alias 1 of RBAR
20 pub rbar_a1: RW<u32>,
21 /// Alias 1 of RASR
22 pub rasr_a1: RW<u32>,
23 /// Alias 2 of RBAR
24 pub rbar_a2: RW<u32>,
25 /// Alias 2 of RASR
26 pub rasr_a2: RW<u32>,
27 /// Alias 3 of RBAR
28 pub rbar_a3: RW<u32>,
29 /// Alias 3 of RASR
30 pub rasr_a3: RW<u32>,
31}
32
33/// Register block for ARMv8-M
34#[cfg(armv8m)]
35#[repr(C)]
36pub struct RegisterBlock {
37 /// Type
38 pub _type: RO<u32>,
39 /// Control
40 pub ctrl: RW<u32>,
41 /// Region Number
42 pub rnr: RW<u32>,
43 /// Region Base Address
44 pub rbar: RW<u32>,
45 /// Region Limit Address
46 pub rlar: RW<u32>,
47 /// Alias 1 of RBAR
48 pub rbar_a1: RW<u32>,
49 /// Alias 1 of RLAR
50 pub rlar_a1: RW<u32>,
51 /// Alias 2 of RBAR
52 pub rbar_a2: RW<u32>,
53 /// Alias 2 of RLAR
54 pub rlar_a2: RW<u32>,
55 /// Alias 3 of RBAR
56 pub rbar_a3: RW<u32>,
57 /// Alias 3 of RLAR
58 pub rlar_a3: RW<u32>,
59
60 // Reserved word at offset 0xBC
61 _reserved: u32,
62
63 /// Memory Attribute Indirection register 0 and 1
64 pub mair: [RW<u32>; 2],
65}