//! Memory Protection Unit use volatile_register::{RO, RW}; /// Register block for ARMv7-M #[cfg(any(armv6m, armv7m, target_arch = "x86_64"))] // x86-64 is for rustdoc #[repr(C)] pub struct RegisterBlock { /// Type pub _type: RO, /// Control pub ctrl: RW, /// Region Number pub rnr: RW, /// Region Base Address pub rbar: RW, /// Region Attribute and Size pub rasr: RW, /// Alias 1 of RBAR pub rbar_a1: RW, /// Alias 1 of RASR pub rasr_a1: RW, /// Alias 2 of RBAR pub rbar_a2: RW, /// Alias 2 of RASR pub rasr_a2: RW, /// Alias 3 of RBAR pub rbar_a3: RW, /// Alias 3 of RASR pub rasr_a3: RW, } /// Register block for ARMv8-M #[cfg(armv8m)] #[repr(C)] pub struct RegisterBlock { /// Type pub _type: RO, /// Control pub ctrl: RW, /// Region Number pub rnr: RW, /// Region Base Address pub rbar: RW, /// Region Limit Address pub rlar: RW, /// Alias 1 of RBAR pub rbar_a1: RW, /// Alias 1 of RLAR pub rlar_a1: RW, /// Alias 2 of RBAR pub rbar_a2: RW, /// Alias 2 of RLAR pub rlar_a2: RW, /// Alias 3 of RBAR pub rbar_a3: RW, /// Alias 3 of RLAR pub rlar_a3: RW, // Reserved word at offset 0xBC _reserved: u32, /// Memory Attribute Indirection register 0 and 1 pub mair: [RW; 2], }