#![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 TZC_BUILD_CONFIG {
pub mod NO_OF_REGIONS {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADDRESS_WIDTH {
pub const offset: u32 = 8;
pub const mask: u32 = 0x3f << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NO_OF_FILTERS {
pub const offset: u32 = 24;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_ACTION {
pub mod REACTION_VALUE {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_GATE_KEEPER {
pub mod OPENREQ {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OPENSTAT {
pub const offset: u32 = 16;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_SPECULATION_CTRL {
pub mod READSPEC_DISABLE {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WRITESPEC_DISABLE {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_INT_STATUS {
pub mod STATUS {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OVERRUN {
pub const offset: u32 = 8;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OVERLAP {
pub const offset: u32 = 16;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_INT_CLEAR {
pub mod CLEAR {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_FAIL_CONTROL0 {
pub mod PRIVILEGE {
pub const offset: u32 = 20;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NON_SECURE {
pub const offset: u32 = 21;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DIRECTION {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_FAIL_ID0 {
pub mod ID {
pub const offset: u32 = 0;
pub const mask: u32 = 0x7ff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_FAIL_CONTROL1 {
pub use super::TZC_FAIL_CONTROL0::DIRECTION;
pub use super::TZC_FAIL_CONTROL0::NON_SECURE;
pub use super::TZC_FAIL_CONTROL0::PRIVILEGE;
}
pub mod TZC_FAIL_ID1 {
pub use super::TZC_FAIL_ID0::ID;
}
pub mod TZC_REGION_ATTRIBUTE0 {
pub mod FILTER_EN {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod S_RD_EN {
pub const offset: u32 = 30;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod S_WR_EN {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_REGION_ATTRIBUTE1 {
pub mod FILTER_EN {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod S_RD_EN {
pub const offset: u32 = 30;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod S_WR_EN {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_REGION_ATTRIBUTE2 {
pub use super::TZC_REGION_ATTRIBUTE1::FILTER_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_RD_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_WR_EN;
}
pub mod TZC_REGION_ATTRIBUTE3 {
pub use super::TZC_REGION_ATTRIBUTE1::FILTER_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_RD_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_WR_EN;
}
pub mod TZC_REGION_ATTRIBUTE4 {
pub use super::TZC_REGION_ATTRIBUTE1::FILTER_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_RD_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_WR_EN;
}
pub mod TZC_REGION_ATTRIBUTE5 {
pub use super::TZC_REGION_ATTRIBUTE1::FILTER_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_RD_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_WR_EN;
}
pub mod TZC_REGION_ATTRIBUTE6 {
pub use super::TZC_REGION_ATTRIBUTE1::FILTER_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_RD_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_WR_EN;
}
pub mod TZC_REGION_ATTRIBUTE7 {
pub use super::TZC_REGION_ATTRIBUTE1::FILTER_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_RD_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_WR_EN;
}
pub mod TZC_REGION_ATTRIBUTE8 {
pub use super::TZC_REGION_ATTRIBUTE1::FILTER_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_RD_EN;
pub use super::TZC_REGION_ATTRIBUTE1::S_WR_EN;
}
pub mod TZC_PID4 {
pub mod PER_ID_4 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_PID5 {
pub mod PER_ID_5 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_PID6 {
pub mod PER_ID_6 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_PID7 {
pub mod PER_ID_7 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_PID0 {
pub mod PER_ID_0 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_PID1 {
pub mod PER_ID_1 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_PID2 {
pub mod PER_ID_2 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_PID3 {
pub mod PER_ID_3 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_CID0 {
pub mod COMP_ID_0 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_CID1 {
pub mod COMP_ID_1 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_CID2 {
pub mod COMP_ID_2 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_CID3 {
pub mod COMP_ID_3 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_FAIL_ADDRESS_LOW0 {
pub mod ADDR_STATUS_LOW {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_FAIL_ADDRESS_HIGH0 {}
pub mod TZC_FAIL_ADDRESS_LOW1 {
pub use super::TZC_FAIL_ADDRESS_LOW0::ADDR_STATUS_LOW;
}
pub mod TZC_FAIL_ADDRESS_HIGH1 {}
pub mod TZC_REGION_BASE_HIGH0 {}
pub mod TZC_REGION_TOP_LOW0 {
pub mod TOP_ADDRESS_LOW {
pub const offset: u32 = 12;
pub const mask: u32 = 0xfffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_REGION_TOP_HIGH0 {}
pub mod TZC_REGION_ID_ACCESS0 {
pub mod NSAID_RD_EN {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NSAID_WR_EN {
pub const offset: u32 = 16;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_REGION_BASE_LOW1 {
pub mod BASE_ADDRESS_LOW {
pub const offset: u32 = 12;
pub const mask: u32 = 0xfffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_REGION_BASE_HIGH1 {}
pub mod TZC_REGION_TOP_LOW1 {
pub mod TOP_ADDRESS_LOW {
pub const offset: u32 = 12;
pub const mask: u32 = 0xfffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TZC_REGION_TOP_HIGH1 {}
pub mod TZC_REGION_ID_ACCESS1 {
pub use super::TZC_REGION_ID_ACCESS0::NSAID_RD_EN;
pub use super::TZC_REGION_ID_ACCESS0::NSAID_WR_EN;
}
pub mod TZC_REGION_BASE_LOW2 {
pub use super::TZC_REGION_BASE_LOW1::BASE_ADDRESS_LOW;
}
pub mod TZC_REGION_BASE_HIGH2 {}
pub mod TZC_REGION_TOP_LOW2 {
pub use super::TZC_REGION_TOP_LOW1::TOP_ADDRESS_LOW;
}
pub mod TZC_REGION_TOP_HIGH2 {}
pub mod TZC_REGION_ID_ACCESS2 {
pub use super::TZC_REGION_ID_ACCESS0::NSAID_RD_EN;
pub use super::TZC_REGION_ID_ACCESS0::NSAID_WR_EN;
}
pub mod TZC_REGION_BASE_LOW3 {
pub use super::TZC_REGION_BASE_LOW1::BASE_ADDRESS_LOW;
}
pub mod TZC_REGION_BASE_HIGH3 {}
pub mod TZC_REGION_TOP_LOW3 {
pub use super::TZC_REGION_TOP_LOW1::TOP_ADDRESS_LOW;
}
pub mod TZC_REGION_TOP_HIGH3 {}
pub mod TZC_REGION_ID_ACCESS3 {
pub use super::TZC_REGION_ID_ACCESS0::NSAID_RD_EN;
pub use super::TZC_REGION_ID_ACCESS0::NSAID_WR_EN;
}
pub mod TZC_REGION_BASE_LOW4 {
pub use super::TZC_REGION_BASE_LOW1::BASE_ADDRESS_LOW;
}
pub mod TZC_REGION_BASE_HIGH4 {}
pub mod TZC_REGION_TOP_LOW4 {
pub use super::TZC_REGION_TOP_LOW1::TOP_ADDRESS_LOW;
}
pub mod TZC_REGION_TOP_HIGH4 {}
pub mod TZC_REGION_ID_ACCESS4 {
pub use super::TZC_REGION_ID_ACCESS0::NSAID_RD_EN;
pub use super::TZC_REGION_ID_ACCESS0::NSAID_WR_EN;
}
pub mod TZC_REGION_BASE_LOW5 {
pub use super::TZC_REGION_BASE_LOW1::BASE_ADDRESS_LOW;
}
pub mod TZC_REGION_BASE_HIGH5 {}
pub mod TZC_REGION_TOP_LOW5 {
pub use super::TZC_REGION_TOP_LOW1::TOP_ADDRESS_LOW;
}
pub mod TZC_REGION_TOP_HIGH5 {}
pub mod TZC_REGION_ID_ACCESS5 {
pub use super::TZC_REGION_ID_ACCESS0::NSAID_RD_EN;
pub use super::TZC_REGION_ID_ACCESS0::NSAID_WR_EN;
}
pub mod TZC_REGION_BASE_LOW6 {
pub use super::TZC_REGION_BASE_LOW1::BASE_ADDRESS_LOW;
}
pub mod TZC_REGION_BASE_HIGH6 {}
pub mod TZC_REGION_TOP_LOW6 {
pub use super::TZC_REGION_TOP_LOW1::TOP_ADDRESS_LOW;
}
pub mod TZC_REGION_TOP_HIGH6 {}
pub mod TZC_REGION_ID_ACCESS6 {
pub use super::TZC_REGION_ID_ACCESS0::NSAID_RD_EN;
pub use super::TZC_REGION_ID_ACCESS0::NSAID_WR_EN;
}
pub mod TZC_REGION_BASE_LOW7 {
pub use super::TZC_REGION_BASE_LOW1::BASE_ADDRESS_LOW;
}
pub mod TZC_REGION_BASE_HIGH7 {}
pub mod TZC_REGION_TOP_LOW7 {
pub use super::TZC_REGION_TOP_LOW1::TOP_ADDRESS_LOW;
}
pub mod TZC_REGION_TOP_HIGH7 {}
pub mod TZC_REGION_ID_ACCESS7 {
pub use super::TZC_REGION_ID_ACCESS0::NSAID_RD_EN;
pub use super::TZC_REGION_ID_ACCESS0::NSAID_WR_EN;
}
pub mod TZC_REGION_BASE_LOW8 {
pub use super::TZC_REGION_BASE_LOW1::BASE_ADDRESS_LOW;
}
pub mod TZC_REGION_BASE_HIGH8 {}
pub mod TZC_REGION_TOP_LOW8 {
pub use super::TZC_REGION_TOP_LOW1::TOP_ADDRESS_LOW;
}
pub mod TZC_REGION_TOP_HIGH8 {}
pub mod TZC_REGION_ID_ACCESS8 {
pub use super::TZC_REGION_ID_ACCESS0::NSAID_RD_EN;
pub use super::TZC_REGION_ID_ACCESS0::NSAID_WR_EN;
}
#[repr(C)]
pub struct RegisterBlock {
pub TZC_BUILD_CONFIG: RORegister<u32>,
pub TZC_ACTION: RWRegister<u32>,
pub TZC_GATE_KEEPER: RWRegister<u32>,
pub TZC_SPECULATION_CTRL: RWRegister<u32>,
pub TZC_INT_STATUS: RORegister<u32>,
pub TZC_INT_CLEAR: RWRegister<u32>,
_reserved1: [u32; 2],
pub TZC_FAIL_ADDRESS_LOW0: RORegister<u32>,
pub TZC_FAIL_ADDRESS_HIGH0: RORegister<u32>,
pub TZC_FAIL_CONTROL0: RORegister<u32>,
pub TZC_FAIL_ID0: RORegister<u32>,
pub TZC_FAIL_ADDRESS_LOW1: RORegister<u32>,
pub TZC_FAIL_ADDRESS_HIGH1: RORegister<u32>,
pub TZC_FAIL_CONTROL1: RORegister<u32>,
pub TZC_FAIL_ID1: RORegister<u32>,
_reserved2: [u32; 49],
pub TZC_REGION_BASE_HIGH0: RORegister<u32>,
pub TZC_REGION_TOP_LOW0: RORegister<u32>,
pub TZC_REGION_TOP_HIGH0: RORegister<u32>,
pub TZC_REGION_ATTRIBUTE0: RWRegister<u32>,
pub TZC_REGION_ID_ACCESS0: RWRegister<u32>,
_reserved3: [u32; 2],
pub TZC_REGION_BASE_LOW1: RWRegister<u32>,
pub TZC_REGION_BASE_HIGH1: RORegister<u32>,
pub TZC_REGION_TOP_LOW1: RWRegister<u32>,
pub TZC_REGION_TOP_HIGH1: RORegister<u32>,
pub TZC_REGION_ATTRIBUTE1: RWRegister<u32>,
pub TZC_REGION_ID_ACCESS1: RWRegister<u32>,
_reserved4: [u32; 2],
pub TZC_REGION_BASE_LOW2: RWRegister<u32>,
pub TZC_REGION_BASE_HIGH2: RORegister<u32>,
pub TZC_REGION_TOP_LOW2: RWRegister<u32>,
pub TZC_REGION_TOP_HIGH2: RORegister<u32>,
pub TZC_REGION_ATTRIBUTE2: RWRegister<u32>,
pub TZC_REGION_ID_ACCESS2: RWRegister<u32>,
_reserved5: [u32; 2],
pub TZC_REGION_BASE_LOW3: RWRegister<u32>,
pub TZC_REGION_BASE_HIGH3: RORegister<u32>,
pub TZC_REGION_TOP_LOW3: RWRegister<u32>,
pub TZC_REGION_TOP_HIGH3: RORegister<u32>,
pub TZC_REGION_ATTRIBUTE3: RWRegister<u32>,
pub TZC_REGION_ID_ACCESS3: RWRegister<u32>,
_reserved6: [u32; 2],
pub TZC_REGION_BASE_LOW4: RWRegister<u32>,
pub TZC_REGION_BASE_HIGH4: RORegister<u32>,
pub TZC_REGION_TOP_LOW4: RWRegister<u32>,
pub TZC_REGION_TOP_HIGH4: RORegister<u32>,
pub TZC_REGION_ATTRIBUTE4: RWRegister<u32>,
pub TZC_REGION_ID_ACCESS4: RWRegister<u32>,
_reserved7: [u32; 2],
pub TZC_REGION_BASE_LOW5: RWRegister<u32>,
pub TZC_REGION_BASE_HIGH5: RORegister<u32>,
pub TZC_REGION_TOP_LOW5: RWRegister<u32>,
pub TZC_REGION_TOP_HIGH5: RORegister<u32>,
pub TZC_REGION_ATTRIBUTE5: RWRegister<u32>,
pub TZC_REGION_ID_ACCESS5: RWRegister<u32>,
_reserved8: [u32; 2],
pub TZC_REGION_BASE_LOW6: RWRegister<u32>,
pub TZC_REGION_BASE_HIGH6: RORegister<u32>,
pub TZC_REGION_TOP_LOW6: RWRegister<u32>,
pub TZC_REGION_TOP_HIGH6: RORegister<u32>,
pub TZC_REGION_ATTRIBUTE6: RWRegister<u32>,
pub TZC_REGION_ID_ACCESS6: RWRegister<u32>,
_reserved9: [u32; 4],
pub TZC_REGION_TOP_LOW7: RWRegister<u32>,
_reserved10: [u32; 1],
pub TZC_REGION_ATTRIBUTE7: RWRegister<u32>,
_reserved11: [u32; 3],
pub TZC_REGION_BASE_LOW8: RWRegister<u32>,
pub TZC_REGION_BASE_HIGH8: RORegister<u32>,
_reserved12: [u32; 2],
pub TZC_REGION_ATTRIBUTE8: RWRegister<u32>,
_reserved13: [u32; 51],
pub TZC_REGION_BASE_LOW7: RWRegister<u32>,
pub TZC_REGION_BASE_HIGH7: RORegister<u32>,
_reserved14: [u32; 1],
pub TZC_REGION_TOP_HIGH7: RORegister<u32>,
_reserved15: [u32; 1],
pub TZC_REGION_ID_ACCESS7: RWRegister<u32>,
_reserved16: [u32; 4],
pub TZC_REGION_TOP_LOW8: RWRegister<u32>,
pub TZC_REGION_TOP_HIGH8: RORegister<u32>,
_reserved17: [u32; 1],
pub TZC_REGION_ID_ACCESS8: RWRegister<u32>,
_reserved18: [u32; 814],
pub TZC_PID4: RORegister<u32>,
pub TZC_PID5: RORegister<u32>,
pub TZC_PID6: RORegister<u32>,
pub TZC_PID7: RORegister<u32>,
pub TZC_PID0: RORegister<u32>,
pub TZC_PID1: RORegister<u32>,
pub TZC_PID2: RORegister<u32>,
pub TZC_PID3: RORegister<u32>,
pub TZC_CID0: RORegister<u32>,
pub TZC_CID1: RORegister<u32>,
pub TZC_CID2: RORegister<u32>,
pub TZC_CID3: RORegister<u32>,
}
pub struct ResetValues {
pub TZC_BUILD_CONFIG: u32,
pub TZC_ACTION: u32,
pub TZC_GATE_KEEPER: u32,
pub TZC_SPECULATION_CTRL: u32,
pub TZC_INT_STATUS: u32,
pub TZC_INT_CLEAR: u32,
pub TZC_FAIL_ADDRESS_LOW0: u32,
pub TZC_FAIL_ADDRESS_HIGH0: u32,
pub TZC_FAIL_CONTROL0: u32,
pub TZC_FAIL_ID0: u32,
pub TZC_FAIL_ADDRESS_LOW1: u32,
pub TZC_FAIL_ADDRESS_HIGH1: u32,
pub TZC_FAIL_CONTROL1: u32,
pub TZC_FAIL_ID1: u32,
pub TZC_REGION_BASE_HIGH0: u32,
pub TZC_REGION_TOP_LOW0: u32,
pub TZC_REGION_TOP_HIGH0: u32,
pub TZC_REGION_ATTRIBUTE0: u32,
pub TZC_REGION_ID_ACCESS0: u32,
pub TZC_REGION_BASE_LOW1: u32,
pub TZC_REGION_BASE_HIGH1: u32,
pub TZC_REGION_TOP_LOW1: u32,
pub TZC_REGION_TOP_HIGH1: u32,
pub TZC_REGION_ATTRIBUTE1: u32,
pub TZC_REGION_ID_ACCESS1: u32,
pub TZC_REGION_BASE_LOW2: u32,
pub TZC_REGION_BASE_HIGH2: u32,
pub TZC_REGION_TOP_LOW2: u32,
pub TZC_REGION_TOP_HIGH2: u32,
pub TZC_REGION_ATTRIBUTE2: u32,
pub TZC_REGION_ID_ACCESS2: u32,
pub TZC_REGION_BASE_LOW3: u32,
pub TZC_REGION_BASE_HIGH3: u32,
pub TZC_REGION_TOP_LOW3: u32,
pub TZC_REGION_TOP_HIGH3: u32,
pub TZC_REGION_ATTRIBUTE3: u32,
pub TZC_REGION_ID_ACCESS3: u32,
pub TZC_REGION_BASE_LOW4: u32,
pub TZC_REGION_BASE_HIGH4: u32,
pub TZC_REGION_TOP_LOW4: u32,
pub TZC_REGION_TOP_HIGH4: u32,
pub TZC_REGION_ATTRIBUTE4: u32,
pub TZC_REGION_ID_ACCESS4: u32,
pub TZC_REGION_BASE_LOW5: u32,
pub TZC_REGION_BASE_HIGH5: u32,
pub TZC_REGION_TOP_LOW5: u32,
pub TZC_REGION_TOP_HIGH5: u32,
pub TZC_REGION_ATTRIBUTE5: u32,
pub TZC_REGION_ID_ACCESS5: u32,
pub TZC_REGION_BASE_LOW6: u32,
pub TZC_REGION_BASE_HIGH6: u32,
pub TZC_REGION_TOP_LOW6: u32,
pub TZC_REGION_TOP_HIGH6: u32,
pub TZC_REGION_ATTRIBUTE6: u32,
pub TZC_REGION_ID_ACCESS6: u32,
pub TZC_REGION_TOP_LOW7: u32,
pub TZC_REGION_ATTRIBUTE7: u32,
pub TZC_REGION_BASE_LOW8: u32,
pub TZC_REGION_BASE_HIGH8: u32,
pub TZC_REGION_ATTRIBUTE8: u32,
pub TZC_REGION_BASE_LOW7: u32,
pub TZC_REGION_BASE_HIGH7: u32,
pub TZC_REGION_TOP_HIGH7: u32,
pub TZC_REGION_ID_ACCESS7: u32,
pub TZC_REGION_TOP_LOW8: u32,
pub TZC_REGION_TOP_HIGH8: u32,
pub TZC_REGION_ID_ACCESS8: u32,
pub TZC_PID4: u32,
pub TZC_PID5: u32,
pub TZC_PID6: u32,
pub TZC_PID7: u32,
pub TZC_PID0: u32,
pub TZC_PID1: u32,
pub TZC_PID2: u32,
pub TZC_PID3: u32,
pub TZC_CID0: u32,
pub TZC_CID1: u32,
pub TZC_CID2: u32,
pub TZC_CID3: 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 TZC {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x5c006000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
TZC_BUILD_CONFIG: 0x01001F08,
TZC_ACTION: 0x00000000,
TZC_GATE_KEEPER: 0x00000000,
TZC_SPECULATION_CTRL: 0x00000000,
TZC_INT_STATUS: 0x00000000,
TZC_INT_CLEAR: 0x00000000,
TZC_FAIL_CONTROL0: 0x00000000,
TZC_FAIL_ID0: 0x00000000,
TZC_FAIL_CONTROL1: 0x00000000,
TZC_FAIL_ID1: 0x00000000,
TZC_REGION_ATTRIBUTE0: 0x00000003,
TZC_REGION_ATTRIBUTE1: 0x00000000,
TZC_REGION_ATTRIBUTE2: 0x00000000,
TZC_REGION_ATTRIBUTE3: 0x00000000,
TZC_REGION_ATTRIBUTE4: 0x00000000,
TZC_REGION_ATTRIBUTE5: 0x00000000,
TZC_REGION_ATTRIBUTE6: 0x00000000,
TZC_REGION_ATTRIBUTE7: 0x00000000,
TZC_REGION_ATTRIBUTE8: 0x00000000,
TZC_PID4: 0x00000004,
TZC_PID5: 0x00000000,
TZC_PID6: 0x00000000,
TZC_PID7: 0x00000000,
TZC_PID0: 0x00000060,
TZC_PID1: 0x000000B4,
TZC_PID2: 0x0000002B,
TZC_PID3: 0x00000000,
TZC_CID0: 0x0000000D,
TZC_CID1: 0x000000F0,
TZC_CID2: 0x00000005,
TZC_CID3: 0x000000B1,
TZC_FAIL_ADDRESS_LOW0: 0x00000000,
TZC_FAIL_ADDRESS_HIGH0: 0x00000000,
TZC_FAIL_ADDRESS_LOW1: 0x00000000,
TZC_FAIL_ADDRESS_HIGH1: 0x00000000,
TZC_REGION_BASE_HIGH0: 0x00000000,
TZC_REGION_TOP_LOW0: 0xFFFFFFFF,
TZC_REGION_TOP_HIGH0: 0x00000000,
TZC_REGION_ID_ACCESS0: 0x00000000,
TZC_REGION_BASE_LOW1: 0x00000000,
TZC_REGION_BASE_HIGH1: 0x00000000,
TZC_REGION_TOP_LOW1: 0x00000FFF,
TZC_REGION_TOP_HIGH1: 0x00000000,
TZC_REGION_ID_ACCESS1: 0x00000000,
TZC_REGION_BASE_LOW2: 0x00000000,
TZC_REGION_BASE_HIGH2: 0x00000000,
TZC_REGION_TOP_LOW2: 0x00000FFF,
TZC_REGION_TOP_HIGH2: 0x00000000,
TZC_REGION_ID_ACCESS2: 0x00000000,
TZC_REGION_BASE_LOW3: 0x00000000,
TZC_REGION_BASE_HIGH3: 0x00000000,
TZC_REGION_TOP_LOW3: 0x00000FFF,
TZC_REGION_TOP_HIGH3: 0x00000000,
TZC_REGION_ID_ACCESS3: 0x00000000,
TZC_REGION_BASE_LOW4: 0x00000000,
TZC_REGION_BASE_HIGH4: 0x00000000,
TZC_REGION_TOP_LOW4: 0x00000FFF,
TZC_REGION_TOP_HIGH4: 0x00000000,
TZC_REGION_ID_ACCESS4: 0x00000000,
TZC_REGION_BASE_LOW5: 0x00000000,
TZC_REGION_BASE_HIGH5: 0x00000000,
TZC_REGION_TOP_LOW5: 0x00000FFF,
TZC_REGION_TOP_HIGH5: 0x00000000,
TZC_REGION_ID_ACCESS5: 0x00000000,
TZC_REGION_BASE_LOW6: 0x00000000,
TZC_REGION_BASE_HIGH6: 0x00000000,
TZC_REGION_TOP_LOW6: 0x00000FFF,
TZC_REGION_TOP_HIGH6: 0x00000000,
TZC_REGION_ID_ACCESS6: 0x00000000,
TZC_REGION_BASE_LOW7: 0x00000000,
TZC_REGION_BASE_HIGH7: 0x00000000,
TZC_REGION_TOP_LOW7: 0x00000FFF,
TZC_REGION_TOP_HIGH7: 0x00000000,
TZC_REGION_ID_ACCESS7: 0x00000000,
TZC_REGION_BASE_LOW8: 0x00000000,
TZC_REGION_BASE_HIGH8: 0x00000000,
TZC_REGION_TOP_LOW8: 0x00000FFF,
TZC_REGION_TOP_HIGH8: 0x00000000,
TZC_REGION_ID_ACCESS8: 0x00000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut TZC_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if TZC_TAKEN {
None
} else {
TZC_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if TZC_TAKEN && inst.addr == INSTANCE.addr {
TZC_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
TZC_TAKEN = true;
INSTANCE
}
}
pub const TZC: *const RegisterBlock = 0x5c006000 as *const _;