#[repr(C)]
#[derive(Debug)]
pub struct RegisterBlock {
bcr1: BCR1,
btr: (),
_reserved2: [u8; 0x04],
bcr: (),
_reserved3: [u8; 0x58],
pcr: (),
_reserved4: [u8; 0x04],
sr: (),
_reserved5: [u8; 0x04],
pmem: (),
_reserved6: [u8; 0x04],
patt: (),
_reserved7: [u8; 0x08],
eccr: (),
_reserved8: [u8; 0x3c],
pio4: PIO4,
_reserved9: [u8; 0x50],
bwtr: (),
}
impl RegisterBlock {
#[inline(always)]
pub const fn bcr1(&self) -> &BCR1 {
&self.bcr1
}
#[inline(always)]
pub const fn btr(&self, n: usize) -> &BTR {
#[allow(clippy::no_effect)]
[(); 4][n];
unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(4)
.add(8 * n)
.cast()
}
}
#[inline(always)]
pub fn btr_iter(&self) -> impl Iterator<Item = &BTR> {
(0..4).map(move |n| unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(4)
.add(8 * n)
.cast()
})
}
#[inline(always)]
pub const fn btr1(&self) -> &BTR {
self.btr(0)
}
#[inline(always)]
pub const fn btr2(&self) -> &BTR {
self.btr(1)
}
#[inline(always)]
pub const fn btr3(&self) -> &BTR {
self.btr(2)
}
#[inline(always)]
pub const fn btr4(&self) -> &BTR {
self.btr(3)
}
#[inline(always)]
pub const fn bcr(&self, n: usize) -> &BCR {
#[allow(clippy::no_effect)]
[(); 3][n];
unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(8)
.add(8 * n)
.cast()
}
}
#[inline(always)]
pub fn bcr_iter(&self) -> impl Iterator<Item = &BCR> {
(0..3).map(move |n| unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(8)
.add(8 * n)
.cast()
})
}
#[inline(always)]
pub const fn bcr2(&self) -> &BCR {
self.bcr(0)
}
#[inline(always)]
pub const fn bcr3(&self) -> &BCR {
self.bcr(1)
}
#[inline(always)]
pub const fn bcr4(&self) -> &BCR {
self.bcr(2)
}
#[inline(always)]
pub const fn pcr(&self, n: usize) -> &PCR {
#[allow(clippy::no_effect)]
[(); 3][n];
unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(96)
.add(32 * n)
.cast()
}
}
#[inline(always)]
pub fn pcr_iter(&self) -> impl Iterator<Item = &PCR> {
(0..3).map(move |n| unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(96)
.add(32 * n)
.cast()
})
}
#[inline(always)]
pub const fn pcr2(&self) -> &PCR {
self.pcr(0)
}
#[inline(always)]
pub const fn pcr3(&self) -> &PCR {
self.pcr(1)
}
#[inline(always)]
pub const fn pcr4(&self) -> &PCR {
self.pcr(2)
}
#[inline(always)]
pub const fn sr(&self, n: usize) -> &SR {
#[allow(clippy::no_effect)]
[(); 3][n];
unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(100)
.add(32 * n)
.cast()
}
}
#[inline(always)]
pub fn sr_iter(&self) -> impl Iterator<Item = &SR> {
(0..3).map(move |n| unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(100)
.add(32 * n)
.cast()
})
}
#[inline(always)]
pub const fn sr2(&self) -> &SR {
self.sr(0)
}
#[inline(always)]
pub const fn sr3(&self) -> &SR {
self.sr(1)
}
#[inline(always)]
pub const fn sr4(&self) -> &SR {
self.sr(2)
}
#[inline(always)]
pub const fn pmem(&self, n: usize) -> &PMEM {
#[allow(clippy::no_effect)]
[(); 3][n];
unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(104)
.add(32 * n)
.cast()
}
}
#[inline(always)]
pub fn pmem_iter(&self) -> impl Iterator<Item = &PMEM> {
(0..3).map(move |n| unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(104)
.add(32 * n)
.cast()
})
}
#[inline(always)]
pub const fn pmem2(&self) -> &PMEM {
self.pmem(0)
}
#[inline(always)]
pub const fn pmem3(&self) -> &PMEM {
self.pmem(1)
}
#[inline(always)]
pub const fn pmem4(&self) -> &PMEM {
self.pmem(2)
}
#[inline(always)]
pub const fn patt(&self, n: usize) -> &PATT {
#[allow(clippy::no_effect)]
[(); 3][n];
unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(108)
.add(32 * n)
.cast()
}
}
#[inline(always)]
pub fn patt_iter(&self) -> impl Iterator<Item = &PATT> {
(0..3).map(move |n| unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(108)
.add(32 * n)
.cast()
})
}
#[inline(always)]
pub const fn patt2(&self) -> &PATT {
self.patt(0)
}
#[inline(always)]
pub const fn patt3(&self) -> &PATT {
self.patt(1)
}
#[inline(always)]
pub const fn patt4(&self) -> &PATT {
self.patt(2)
}
#[inline(always)]
pub const fn eccr(&self, n: usize) -> &ECCR {
#[allow(clippy::no_effect)]
[(); 2][n];
unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(116)
.add(32 * n)
.cast()
}
}
#[inline(always)]
pub fn eccr_iter(&self) -> impl Iterator<Item = &ECCR> {
(0..2).map(move |n| unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(116)
.add(32 * n)
.cast()
})
}
#[inline(always)]
pub const fn eccr2(&self) -> &ECCR {
self.eccr(0)
}
#[inline(always)]
pub const fn eccr3(&self) -> &ECCR {
self.eccr(1)
}
#[inline(always)]
pub const fn pio4(&self) -> &PIO4 {
&self.pio4
}
#[inline(always)]
pub const fn bwtr(&self, n: usize) -> &BWTR {
#[allow(clippy::no_effect)]
[(); 4][n];
unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(260)
.add(8 * n)
.cast()
}
}
#[inline(always)]
pub fn bwtr_iter(&self) -> impl Iterator<Item = &BWTR> {
(0..4).map(move |n| unsafe {
&*core::ptr::from_ref(self)
.cast::<u8>()
.add(260)
.add(8 * n)
.cast()
})
}
#[inline(always)]
pub const fn bwtr1(&self) -> &BWTR {
self.bwtr(0)
}
#[inline(always)]
pub const fn bwtr2(&self) -> &BWTR {
self.bwtr(1)
}
#[inline(always)]
pub const fn bwtr3(&self) -> &BWTR {
self.bwtr(2)
}
#[inline(always)]
pub const fn bwtr4(&self) -> &BWTR {
self.bwtr(3)
}
}
pub type BCR1 = crate::Reg<bcr1::BCR1rs>;
pub mod bcr1;
pub type BTR = crate::Reg<btr::BTRrs>;
pub mod btr;
pub type BCR = crate::Reg<bcr::BCRrs>;
pub mod bcr;
pub type PCR = crate::Reg<pcr::PCRrs>;
pub mod pcr;
pub type SR = crate::Reg<sr::SRrs>;
pub mod sr;
pub type PMEM = crate::Reg<pmem::PMEMrs>;
pub mod pmem;
pub type PATT = crate::Reg<patt::PATTrs>;
pub mod patt;
pub type ECCR = crate::Reg<eccr::ECCRrs>;
pub mod eccr;
pub type PIO4 = crate::Reg<pio4::PIO4rs>;
pub mod pio4;
pub type BWTR = crate::Reg<bwtr::BWTRrs>;
pub mod bwtr;