#![allow(non_snake_case, non_upper_case_globals)]
#![allow(non_camel_case_types)]
use crate::{RORegister, RWRegister};
#[cfg(not(feature = "nosync"))]
use core::marker::PhantomData;
pub mod R0 {
pub mod LOCK {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod COREID {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PROCID {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod R1 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R2 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R3 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R4 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R5 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R6 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R7 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R8 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R9 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R10 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R11 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R12 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R13 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R14 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R15 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R16 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R17 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R18 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R19 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R20 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R21 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R22 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R23 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R24 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R25 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R26 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R27 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R28 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R29 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R30 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod R31 {
pub use super::R0::COREID;
pub use super::R0::LOCK;
pub use super::R0::PROCID;
}
pub mod RLR0 {
pub mod LOCK {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod COREID {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PROCID {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod RLR1 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR2 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR3 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR4 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR5 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR6 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR7 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR8 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR9 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR10 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR11 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR12 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR13 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR14 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR15 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR16 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR17 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR18 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR19 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR20 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR21 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR22 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR23 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR24 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR25 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR26 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR27 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR28 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR29 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR30 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod RLR31 {
pub use super::RLR0::COREID;
pub use super::RLR0::LOCK;
pub use super::RLR0::PROCID;
}
pub mod CR {
pub mod KEY {
pub const offset: u32 = 16;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod COREID {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod KEYR {
pub mod KEY {
pub const offset: u32 = 16;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod HWCFGR2 {
pub mod MASTERID4 {
pub const offset: u32 = 12;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MASTERID3 {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MASTERID2 {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MASTERID1 {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod HWCFGR1 {
pub mod NBINT {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NBSEM {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod VERR {
pub mod MAJREV {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MINREV {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod IPIDR {
pub mod ID {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SIDR {
pub mod SID {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod C1IER {
pub mod ISEm {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod C1ICR {
pub mod ISCm {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod C1ISR {
pub mod ISFm {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod C1MISR {
pub mod MISFm {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod C2IER {
pub use super::C1IER::ISEm;
}
pub mod C2ICR {
pub use super::C1ICR::ISCm;
}
pub mod C2ISR {
pub use super::C1ISR::ISFm;
}
pub mod C2MISR {
pub use super::C1MISR::MISFm;
}
#[repr(C)]
pub struct RegisterBlock {
pub R0: RWRegister<u32>,
pub R1: RWRegister<u32>,
pub R2: RWRegister<u32>,
pub R3: RWRegister<u32>,
pub R4: RWRegister<u32>,
pub R5: RWRegister<u32>,
pub R6: RWRegister<u32>,
pub R7: RWRegister<u32>,
pub R8: RWRegister<u32>,
pub R9: RWRegister<u32>,
pub R10: RWRegister<u32>,
pub R11: RWRegister<u32>,
pub R12: RWRegister<u32>,
pub R13: RWRegister<u32>,
pub R14: RWRegister<u32>,
pub R15: RWRegister<u32>,
pub R16: RWRegister<u32>,
pub R17: RWRegister<u32>,
pub R18: RWRegister<u32>,
pub R19: RWRegister<u32>,
pub R20: RWRegister<u32>,
pub R21: RWRegister<u32>,
pub R22: RWRegister<u32>,
pub R23: RWRegister<u32>,
pub R24: RWRegister<u32>,
pub R25: RWRegister<u32>,
pub R26: RWRegister<u32>,
pub R27: RWRegister<u32>,
pub R28: RWRegister<u32>,
pub R29: RWRegister<u32>,
pub R30: RWRegister<u32>,
pub R31: RWRegister<u32>,
pub RLR0: RORegister<u32>,
pub RLR1: RORegister<u32>,
pub RLR2: RORegister<u32>,
pub RLR3: RORegister<u32>,
pub RLR4: RORegister<u32>,
pub RLR5: RORegister<u32>,
pub RLR6: RORegister<u32>,
pub RLR7: RORegister<u32>,
pub RLR8: RORegister<u32>,
pub RLR9: RORegister<u32>,
pub RLR10: RORegister<u32>,
pub RLR11: RORegister<u32>,
pub RLR12: RORegister<u32>,
pub RLR13: RORegister<u32>,
pub RLR14: RORegister<u32>,
pub RLR15: RORegister<u32>,
pub RLR16: RORegister<u32>,
pub RLR17: RORegister<u32>,
pub RLR18: RORegister<u32>,
pub RLR19: RORegister<u32>,
pub RLR20: RORegister<u32>,
pub RLR21: RORegister<u32>,
pub RLR22: RORegister<u32>,
pub RLR23: RORegister<u32>,
pub RLR24: RORegister<u32>,
pub RLR25: RORegister<u32>,
pub RLR26: RORegister<u32>,
pub RLR27: RORegister<u32>,
pub RLR28: RORegister<u32>,
pub RLR29: RORegister<u32>,
pub RLR30: RORegister<u32>,
pub RLR31: RORegister<u32>,
pub C1IER: RWRegister<u32>,
pub C1ICR: RWRegister<u32>,
pub C1ISR: RORegister<u32>,
pub C1MISR: RORegister<u32>,
pub C2IER: RWRegister<u32>,
pub C2ICR: RWRegister<u32>,
pub C2ISR: RORegister<u32>,
pub C2MISR: RORegister<u32>,
_reserved1: [u8; 32],
pub CR: RWRegister<u32>,
pub KEYR: RWRegister<u32>,
_reserved2: [u8; 676],
pub HWCFGR2: RORegister<u32>,
pub HWCFGR1: RORegister<u32>,
pub VERR: RORegister<u32>,
pub IPIDR: RORegister<u32>,
pub SIDR: RORegister<u32>,
}
pub struct ResetValues {
pub R0: u32,
pub R1: u32,
pub R2: u32,
pub R3: u32,
pub R4: u32,
pub R5: u32,
pub R6: u32,
pub R7: u32,
pub R8: u32,
pub R9: u32,
pub R10: u32,
pub R11: u32,
pub R12: u32,
pub R13: u32,
pub R14: u32,
pub R15: u32,
pub R16: u32,
pub R17: u32,
pub R18: u32,
pub R19: u32,
pub R20: u32,
pub R21: u32,
pub R22: u32,
pub R23: u32,
pub R24: u32,
pub R25: u32,
pub R26: u32,
pub R27: u32,
pub R28: u32,
pub R29: u32,
pub R30: u32,
pub R31: u32,
pub RLR0: u32,
pub RLR1: u32,
pub RLR2: u32,
pub RLR3: u32,
pub RLR4: u32,
pub RLR5: u32,
pub RLR6: u32,
pub RLR7: u32,
pub RLR8: u32,
pub RLR9: u32,
pub RLR10: u32,
pub RLR11: u32,
pub RLR12: u32,
pub RLR13: u32,
pub RLR14: u32,
pub RLR15: u32,
pub RLR16: u32,
pub RLR17: u32,
pub RLR18: u32,
pub RLR19: u32,
pub RLR20: u32,
pub RLR21: u32,
pub RLR22: u32,
pub RLR23: u32,
pub RLR24: u32,
pub RLR25: u32,
pub RLR26: u32,
pub RLR27: u32,
pub RLR28: u32,
pub RLR29: u32,
pub RLR30: u32,
pub RLR31: u32,
pub C1IER: u32,
pub C1ICR: u32,
pub C1ISR: u32,
pub C1MISR: u32,
pub C2IER: u32,
pub C2ICR: u32,
pub C2ISR: u32,
pub C2MISR: u32,
pub CR: u32,
pub KEYR: u32,
pub HWCFGR2: u32,
pub HWCFGR1: u32,
pub VERR: u32,
pub IPIDR: u32,
pub SIDR: u32,
}
#[cfg(not(feature = "nosync"))]
pub struct Instance {
pub(crate) addr: u32,
pub(crate) _marker: PhantomData<*const RegisterBlock>,
}
#[cfg(not(feature = "nosync"))]
impl ::core::ops::Deref for Instance {
type Target = RegisterBlock;
#[inline(always)]
fn deref(&self) -> &RegisterBlock {
unsafe { &*(self.addr as *const _) }
}
}
#[cfg(feature = "rtic")]
unsafe impl Send for Instance {}
pub mod HSEM {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x58001400,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
R0: 0x00000000,
R1: 0x00000000,
R2: 0x00000000,
R3: 0x00000000,
R4: 0x00000000,
R5: 0x00000000,
R6: 0x00000000,
R7: 0x00000000,
R8: 0x00000000,
R9: 0x00000000,
R10: 0x00000000,
R11: 0x00000000,
R12: 0x00000000,
R13: 0x00000000,
R14: 0x00000000,
R15: 0x00000000,
R16: 0x00000000,
R17: 0x00000000,
R18: 0x00000000,
R19: 0x00000000,
R20: 0x00000000,
R21: 0x00000000,
R22: 0x00000000,
R23: 0x00000000,
R24: 0x00000000,
R25: 0x00000000,
R26: 0x00000000,
R27: 0x00000000,
R28: 0x00000000,
R29: 0x00000000,
R30: 0x00000000,
R31: 0x00000000,
RLR0: 0x00000000,
RLR1: 0x00000000,
RLR2: 0x00000000,
RLR3: 0x00000000,
RLR4: 0x00000000,
RLR5: 0x00000000,
RLR6: 0x00000000,
RLR7: 0x00000000,
RLR8: 0x00000000,
RLR9: 0x00000000,
RLR10: 0x00000000,
RLR11: 0x00000000,
RLR12: 0x00000000,
RLR13: 0x00000000,
RLR14: 0x00000000,
RLR15: 0x00000000,
RLR16: 0x00000000,
RLR17: 0x00000000,
RLR18: 0x00000000,
RLR19: 0x00000000,
RLR20: 0x00000000,
RLR21: 0x00000000,
RLR22: 0x00000000,
RLR23: 0x00000000,
RLR24: 0x00000000,
RLR25: 0x00000000,
RLR26: 0x00000000,
RLR27: 0x00000000,
RLR28: 0x00000000,
RLR29: 0x00000000,
RLR30: 0x00000000,
RLR31: 0x00000000,
CR: 0x00000000,
KEYR: 0x00000000,
HWCFGR2: 0x00000084,
HWCFGR1: 0x00000220,
VERR: 0x00000020,
IPIDR: 0x00100072,
SIDR: 0xA3C5DD01,
C1IER: 0x00000000,
C1ICR: 0x00000000,
C1ISR: 0x00000000,
C1MISR: 0x00000000,
C2IER: 0x00000000,
C2ICR: 0x00000000,
C2ISR: 0x00000000,
C2MISR: 0x00000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut HSEM_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if HSEM_TAKEN {
None
} else {
HSEM_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if HSEM_TAKEN && inst.addr == INSTANCE.addr {
HSEM_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
HSEM_TAKEN = true;
INSTANCE
}
}
pub const HSEM: *const RegisterBlock = 0x58001400 as *const _;