use crate::soc::{Access, FieldSpec};
#[expect(
clippy::cast_possible_truncation,
reason = "every field here is of a 32-bit register, and a const fn has no try_from"
)]
const fn word(value: u64) -> u32 {
value as u32
}
pub(crate) const fn mask(field: &FieldSpec) -> u32 {
word(field.mask())
}
pub(crate) const fn get(field: &FieldSpec, value: u32) -> u32 {
word(field.get(value as u64))
}
pub(crate) const fn set(field: &FieldSpec, value: u32, to: u32) -> u32 {
word(field.set(value as u64, to as u64))
}
pub(crate) const fn is_set(field: &FieldSpec, value: u32) -> bool {
field.is_set(value as u64)
}
pub(crate) mod xpsr {
use super::{Access, FieldSpec};
pub(crate) const N: &FieldSpec = &FieldSpec::new("N", 31, 1, Access::ReadWrite);
pub(crate) const Z: &FieldSpec = &FieldSpec::new("Z", 30, 1, Access::ReadWrite);
pub(crate) const C: &FieldSpec = &FieldSpec::new("C", 29, 1, Access::ReadWrite);
pub(crate) const V: &FieldSpec = &FieldSpec::new("V", 28, 1, Access::ReadWrite);
pub(crate) const Q: &FieldSpec = &FieldSpec::new("Q", 27, 1, Access::ReadWrite);
pub(crate) const IT_1_0: &FieldSpec = &FieldSpec::new("IT[1:0]", 25, 2, Access::ReadOnly);
pub(crate) const T: &FieldSpec = &FieldSpec::new("T", 24, 1, Access::ReadOnly);
pub(crate) const GE: &FieldSpec = &FieldSpec::new("GE[3:0]", 16, 4, Access::ReadWrite);
pub(crate) const IT_7_2: &FieldSpec = &FieldSpec::new("IT[7:2]", 10, 6, Access::ReadOnly);
pub(crate) const REALIGNED: &FieldSpec = &FieldSpec::new("psr<9>", 9, 1, Access::ReadOnly);
pub(crate) const EXCEPTION_NUMBER: &FieldSpec =
&FieldSpec::new("Exception Number", 0, 9, Access::ReadOnly);
}
pub(crate) mod masks {
use super::{Access, FieldSpec};
pub(crate) const PM: &FieldSpec = &FieldSpec::new("PM", 0, 1, Access::ReadWrite);
pub(crate) const FM: &FieldSpec = &FieldSpec::new("FM", 0, 1, Access::ReadWrite);
pub(crate) const BASEPRI: &FieldSpec = &FieldSpec::new("BASEPRI", 0, 8, Access::ReadWrite);
}
pub(crate) mod control {
use super::{Access, FieldSpec};
pub(crate) const NPRIV: &FieldSpec = &FieldSpec::new("nPRIV", 0, 1, Access::ReadWrite);
pub(crate) const SPSEL: &FieldSpec = &FieldSpec::new("SPSEL", 1, 1, Access::ReadWrite);
pub(crate) const FPCA: &FieldSpec = &FieldSpec::new("FPCA", 2, 1, Access::ReadWrite);
}
pub(crate) mod fpscr {
use super::{Access, FieldSpec};
pub(crate) const N: &FieldSpec = &FieldSpec::new("N", 31, 1, Access::ReadWrite);
pub(crate) const Z: &FieldSpec = &FieldSpec::new("Z", 30, 1, Access::ReadWrite);
pub(crate) const C: &FieldSpec = &FieldSpec::new("C", 29, 1, Access::ReadWrite);
pub(crate) const V: &FieldSpec = &FieldSpec::new("V", 28, 1, Access::ReadWrite);
pub(crate) const AHP: &FieldSpec = &FieldSpec::new("AHP", 26, 1, Access::ReadWrite);
pub(crate) const DN: &FieldSpec = &FieldSpec::new("DN", 25, 1, Access::ReadWrite);
pub(crate) const FZ: &FieldSpec = &FieldSpec::new("FZ", 24, 1, Access::ReadWrite);
pub(crate) const RMODE: &FieldSpec = &FieldSpec::new("RMode", 22, 2, Access::ReadWrite);
pub(crate) const IDC: &FieldSpec = &FieldSpec::new("IDC", 7, 1, Access::ReadWrite);
pub(crate) const IXC: &FieldSpec = &FieldSpec::new("IXC", 4, 1, Access::ReadWrite);
pub(crate) const UFC: &FieldSpec = &FieldSpec::new("UFC", 3, 1, Access::ReadWrite);
pub(crate) const OFC: &FieldSpec = &FieldSpec::new("OFC", 2, 1, Access::ReadWrite);
pub(crate) const DZC: &FieldSpec = &FieldSpec::new("DZC", 1, 1, Access::ReadWrite);
pub(crate) const IOC: &FieldSpec = &FieldSpec::new("IOC", 0, 1, Access::ReadWrite);
}
pub(crate) mod exc_return {
use super::{Access, FieldSpec};
pub(crate) const PREFIX: &FieldSpec =
&FieldSpec::new("EXC_RETURN<31:28>", 28, 4, Access::ReadWrite);
pub(crate) const BASIC_FRAME: &FieldSpec =
&FieldSpec::new("EXC_RETURN<4>", 4, 1, Access::ReadWrite);
pub(crate) const TARGET: &FieldSpec =
&FieldSpec::new("EXC_RETURN<3:0>", 0, 4, Access::ReadWrite);
pub(crate) const PROCESS_STACK: &FieldSpec =
&FieldSpec::new("EXC_RETURN<2>", 2, 1, Access::ReadWrite);
}
pub(crate) mod icsr {
use super::{Access, FieldSpec};
pub(crate) const NMIPENDSET: &FieldSpec =
&FieldSpec::new("NMIPENDSET", 31, 1, Access::ReadWrite);
pub(crate) const PENDSVSET: &FieldSpec = &FieldSpec::new("PENDSVSET", 28, 1, Access::ReadWrite);
pub(crate) const PENDSVCLR: &FieldSpec = &FieldSpec::new("PENDSVCLR", 27, 1, Access::WriteOnly);
pub(crate) const PENDSTSET: &FieldSpec = &FieldSpec::new("PENDSTSET", 26, 1, Access::ReadWrite);
pub(crate) const PENDSTCLR: &FieldSpec = &FieldSpec::new("PENDSTCLR", 25, 1, Access::WriteOnly);
pub(crate) const ISRPENDING: &FieldSpec =
&FieldSpec::new("ISRPENDING", 22, 1, Access::ReadOnly);
pub(crate) const VECTPENDING: &FieldSpec =
&FieldSpec::new("VECTPENDING", 12, 9, Access::ReadOnly);
pub(crate) const RETTOBASE: &FieldSpec = &FieldSpec::new("RETTOBASE", 11, 1, Access::ReadOnly);
pub(crate) const VECTACTIVE: &FieldSpec = &FieldSpec::new("VECTACTIVE", 0, 9, Access::ReadOnly);
}
pub(crate) mod vtor {
use super::{Access, FieldSpec};
pub(crate) const TBLOFF: &FieldSpec = &FieldSpec::new("TBLOFF", 7, 25, Access::ReadWrite);
}
pub(crate) mod aircr {
use super::{Access, FieldSpec};
pub(crate) const VECTKEY: &FieldSpec = &FieldSpec::new("VECTKEY", 16, 16, Access::WriteOnly);
pub(crate) const VECTKEYSTAT: &FieldSpec =
&FieldSpec::new("VECTKEYSTAT", 16, 16, Access::ReadOnly);
pub(crate) const ENDIANNESS: &FieldSpec =
&FieldSpec::new("ENDIANNESS", 15, 1, Access::ReadOnly);
pub(crate) const PRIGROUP: &FieldSpec = &FieldSpec::new("PRIGROUP", 8, 3, Access::ReadWrite);
pub(crate) const SYSRESETREQ: &FieldSpec =
&FieldSpec::new("SYSRESETREQ", 2, 1, Access::ReadWrite);
}
pub(crate) mod scr {
use super::{Access, FieldSpec};
pub(crate) const SEVONPEND: &FieldSpec = &FieldSpec::new("SEVONPEND", 4, 1, Access::ReadWrite);
pub(crate) const SLEEPDEEP: &FieldSpec = &FieldSpec::new("SLEEPDEEP", 2, 1, Access::ReadWrite);
pub(crate) const SLEEPONEXIT: &FieldSpec =
&FieldSpec::new("SLEEPONEXIT", 1, 1, Access::ReadWrite);
}
pub(crate) mod ccr {
use super::{Access, FieldSpec};
pub(crate) const BP: &FieldSpec = &FieldSpec::new("BP", 18, 1, Access::ReadWrite);
pub(crate) const IC: &FieldSpec = &FieldSpec::new("IC", 17, 1, Access::ReadWrite);
pub(crate) const DC: &FieldSpec = &FieldSpec::new("DC", 16, 1, Access::ReadWrite);
pub(crate) const STKALIGN: &FieldSpec = &FieldSpec::new("STKALIGN", 9, 1, Access::ReadWrite);
pub(crate) const BFHFNMIGN: &FieldSpec = &FieldSpec::new("BFHFNMIGN", 8, 1, Access::ReadWrite);
pub(crate) const DIV_0_TRP: &FieldSpec = &FieldSpec::new("DIV_0_TRP", 4, 1, Access::ReadWrite);
pub(crate) const UNALIGN_TRP: &FieldSpec =
&FieldSpec::new("UNALIGN_TRP", 3, 1, Access::ReadWrite);
pub(crate) const USERSETMPEND: &FieldSpec =
&FieldSpec::new("USERSETMPEND", 1, 1, Access::ReadWrite);
pub(crate) const NONBASETHRDENA: &FieldSpec =
&FieldSpec::new("NONBASETHRDENA", 0, 1, Access::ReadWrite);
}
pub(crate) const fn ctype(level: u8) -> FieldSpec {
FieldSpec::new("Ctype", 3 * (level - 1), 3, Access::ReadOnly)
}
pub(crate) mod csselr {
use super::{Access, FieldSpec};
pub(crate) const LEVEL: &FieldSpec = &FieldSpec::new("Level", 1, 3, Access::ReadWrite);
pub(crate) const IND: &FieldSpec = &FieldSpec::new("InD", 0, 1, Access::ReadWrite);
}
pub(crate) mod shcsr {
use super::{Access, FieldSpec};
pub(crate) const USGFAULTENA: &FieldSpec =
&FieldSpec::new("USGFAULTENA", 18, 1, Access::ReadWrite);
pub(crate) const BUSFAULTENA: &FieldSpec =
&FieldSpec::new("BUSFAULTENA", 17, 1, Access::ReadWrite);
pub(crate) const MEMFAULTENA: &FieldSpec =
&FieldSpec::new("MEMFAULTENA", 16, 1, Access::ReadWrite);
pub(crate) const SVCALLPENDED: &FieldSpec =
&FieldSpec::new("SVCALLPENDED", 15, 1, Access::ReadWrite);
pub(crate) const BUSFAULTPENDED: &FieldSpec =
&FieldSpec::new("BUSFAULTPENDED", 14, 1, Access::ReadWrite);
pub(crate) const MEMFAULTPENDED: &FieldSpec =
&FieldSpec::new("MEMFAULTPENDED", 13, 1, Access::ReadWrite);
pub(crate) const USGFAULTPENDED: &FieldSpec =
&FieldSpec::new("USGFAULTPENDED", 12, 1, Access::ReadWrite);
pub(crate) const SYSTICKACT: &FieldSpec =
&FieldSpec::new("SYSTICKACT", 11, 1, Access::ReadWrite);
pub(crate) const PENDSVACT: &FieldSpec = &FieldSpec::new("PENDSVACT", 10, 1, Access::ReadWrite);
pub(crate) const MONITORACT: &FieldSpec =
&FieldSpec::new("MONITORACT", 8, 1, Access::ReadWrite);
pub(crate) const SVCALLACT: &FieldSpec = &FieldSpec::new("SVCALLACT", 7, 1, Access::ReadWrite);
pub(crate) const USGFAULTACT: &FieldSpec =
&FieldSpec::new("USGFAULTACT", 3, 1, Access::ReadWrite);
pub(crate) const BUSFAULTACT: &FieldSpec =
&FieldSpec::new("BUSFAULTACT", 1, 1, Access::ReadWrite);
pub(crate) const MEMFAULTACT: &FieldSpec =
&FieldSpec::new("MEMFAULTACT", 0, 1, Access::ReadWrite);
}
pub(crate) mod cfsr {
use super::{Access, FieldSpec};
pub(crate) const IACCVIOL: &FieldSpec = &FieldSpec::new("IACCVIOL", 0, 1, Access::ReadWrite);
pub(crate) const DACCVIOL: &FieldSpec = &FieldSpec::new("DACCVIOL", 1, 1, Access::ReadWrite);
pub(crate) const MUNSTKERR: &FieldSpec = &FieldSpec::new("MUNSTKERR", 3, 1, Access::ReadWrite);
pub(crate) const MSTKERR: &FieldSpec = &FieldSpec::new("MSTKERR", 4, 1, Access::ReadWrite);
pub(crate) const MLSPERR: &FieldSpec = &FieldSpec::new("MLSPERR", 5, 1, Access::ReadWrite);
pub(crate) const MMARVALID: &FieldSpec = &FieldSpec::new("MMARVALID", 7, 1, Access::ReadWrite);
pub(crate) const IBUSERR: &FieldSpec = &FieldSpec::new("IBUSERR", 8, 1, Access::ReadWrite);
pub(crate) const PRECISERR: &FieldSpec = &FieldSpec::new("PRECISERR", 9, 1, Access::ReadWrite);
pub(crate) const UNSTKERR: &FieldSpec = &FieldSpec::new("UNSTKERR", 11, 1, Access::ReadWrite);
pub(crate) const STKERR: &FieldSpec = &FieldSpec::new("STKERR", 12, 1, Access::ReadWrite);
pub(crate) const LSPERR: &FieldSpec = &FieldSpec::new("LSPERR", 13, 1, Access::ReadWrite);
pub(crate) const BFARVALID: &FieldSpec = &FieldSpec::new("BFARVALID", 15, 1, Access::ReadWrite);
pub(crate) const UNDEFINSTR: &FieldSpec =
&FieldSpec::new("UNDEFINSTR", 16, 1, Access::ReadWrite);
pub(crate) const INVSTATE: &FieldSpec = &FieldSpec::new("INVSTATE", 17, 1, Access::ReadWrite);
pub(crate) const INVPC: &FieldSpec = &FieldSpec::new("INVPC", 18, 1, Access::ReadWrite);
pub(crate) const NOCP: &FieldSpec = &FieldSpec::new("NOCP", 19, 1, Access::ReadWrite);
pub(crate) const UNALIGNED: &FieldSpec = &FieldSpec::new("UNALIGNED", 24, 1, Access::ReadWrite);
pub(crate) const DIVBYZERO: &FieldSpec = &FieldSpec::new("DIVBYZERO", 25, 1, Access::ReadWrite);
}
pub(crate) mod hfsr {
use super::{Access, FieldSpec};
pub(crate) const DEBUGEVT: &FieldSpec = &FieldSpec::new("DEBUGEVT", 31, 1, Access::ReadWrite);
pub(crate) const FORCED: &FieldSpec = &FieldSpec::new("FORCED", 30, 1, Access::ReadWrite);
pub(crate) const VECTTBL: &FieldSpec = &FieldSpec::new("VECTTBL", 1, 1, Access::ReadWrite);
}
pub(crate) mod cpacr {
use super::{Access, FieldSpec};
pub(crate) const CP11: &FieldSpec = &FieldSpec::new("CP11", 22, 2, Access::ReadWrite);
pub(crate) const CP10: &FieldSpec = &FieldSpec::new("CP10", 20, 2, Access::ReadWrite);
}
pub(crate) mod fpccr {
use super::{Access, FieldSpec};
pub(crate) const ASPEN: &FieldSpec = &FieldSpec::new("ASPEN", 31, 1, Access::ReadWrite);
pub(crate) const LSPEN: &FieldSpec = &FieldSpec::new("LSPEN", 30, 1, Access::ReadWrite);
pub(crate) const MONRDY: &FieldSpec = &FieldSpec::new("MONRDY", 8, 1, Access::ReadWrite);
pub(crate) const BFRDY: &FieldSpec = &FieldSpec::new("BFRDY", 6, 1, Access::ReadWrite);
pub(crate) const MMRDY: &FieldSpec = &FieldSpec::new("MMRDY", 5, 1, Access::ReadWrite);
pub(crate) const HFRDY: &FieldSpec = &FieldSpec::new("HFRDY", 4, 1, Access::ReadWrite);
pub(crate) const THREAD: &FieldSpec = &FieldSpec::new("THREAD", 3, 1, Access::ReadWrite);
pub(crate) const USER: &FieldSpec = &FieldSpec::new("USER", 1, 1, Access::ReadWrite);
pub(crate) const LSPACT: &FieldSpec = &FieldSpec::new("LSPACT", 0, 1, Access::ReadWrite);
}
pub(crate) mod fpcar {
use super::{Access, FieldSpec};
pub(crate) const ADDRESS: &FieldSpec = &FieldSpec::new("ADDRESS", 3, 29, Access::ReadWrite);
}
pub(crate) mod fpdscr {
use super::{Access, FieldSpec};
pub(crate) const AHP: &FieldSpec = &FieldSpec::new("AHP", 26, 1, Access::ReadWrite);
pub(crate) const DN: &FieldSpec = &FieldSpec::new("DN", 25, 1, Access::ReadWrite);
pub(crate) const FZ: &FieldSpec = &FieldSpec::new("FZ", 24, 1, Access::ReadWrite);
pub(crate) const RMODE: &FieldSpec = &FieldSpec::new("RMode", 22, 2, Access::ReadWrite);
}
pub(crate) mod actlr {
use super::{Access, FieldSpec};
pub(crate) const DISOOFP: &FieldSpec = &FieldSpec::new("DISOOFP", 9, 1, Access::ReadWrite);
pub(crate) const DISFPCA: &FieldSpec = &FieldSpec::new("DISFPCA", 8, 1, Access::ReadWrite);
pub(crate) const DISFOLD: &FieldSpec = &FieldSpec::new("DISFOLD", 2, 1, Access::ReadWrite);
pub(crate) const DISDEFWBUF: &FieldSpec =
&FieldSpec::new("DISDEFWBUF", 1, 1, Access::ReadWrite);
pub(crate) const DISMCYCINT: &FieldSpec =
&FieldSpec::new("DISMCYCINT", 0, 1, Access::ReadWrite);
}
pub(crate) mod stir {
use super::{Access, FieldSpec};
pub(crate) const INTID: &FieldSpec = &FieldSpec::new("INTID", 0, 9, Access::WriteOnly);
}
pub(crate) mod syst_csr {
use super::{Access, FieldSpec};
pub(crate) const COUNTFLAG: &FieldSpec = &FieldSpec::new("COUNTFLAG", 16, 1, Access::ReadOnly);
pub(crate) const CLKSOURCE: &FieldSpec = &FieldSpec::new("CLKSOURCE", 2, 1, Access::ReadWrite);
pub(crate) const TICKINT: &FieldSpec = &FieldSpec::new("TICKINT", 1, 1, Access::ReadWrite);
pub(crate) const ENABLE: &FieldSpec = &FieldSpec::new("ENABLE", 0, 1, Access::ReadWrite);
}
pub(crate) mod syst_rvr {
use super::{Access, FieldSpec};
pub(crate) const RELOAD: &FieldSpec = &FieldSpec::new("RELOAD", 0, 24, Access::ReadWrite);
}
pub(crate) mod syst_calib {
use super::{Access, FieldSpec};
pub(crate) const SKEW: &FieldSpec = &FieldSpec::new("SKEW", 30, 1, Access::ReadOnly);
pub(crate) const TENMS: &FieldSpec = &FieldSpec::new("TENMS", 0, 24, Access::ReadOnly);
}
pub(crate) mod mpu_type {
use super::{Access, FieldSpec};
pub(crate) const DREGION: &FieldSpec = &FieldSpec::new("DREGION", 8, 8, Access::ReadOnly);
}
pub(crate) mod mpu_ctrl {
use super::{Access, FieldSpec};
pub(crate) const ENABLE: &FieldSpec = &FieldSpec::new("ENABLE", 0, 1, Access::ReadWrite);
pub(crate) const HFNMIENA: &FieldSpec = &FieldSpec::new("HFNMIENA", 1, 1, Access::ReadWrite);
pub(crate) const PRIVDEFENA: &FieldSpec =
&FieldSpec::new("PRIVDEFENA", 2, 1, Access::ReadWrite);
}
pub(crate) mod mpu_rnr {
use super::{Access, FieldSpec};
pub(crate) const REGION: &FieldSpec = &FieldSpec::new("REGION", 0, 8, Access::ReadWrite);
}
pub(crate) mod mpu_rbar {
use super::{Access, FieldSpec};
pub(crate) const REGION: &FieldSpec = &FieldSpec::new("REGION", 0, 4, Access::ReadWrite);
pub(crate) const VALID: &FieldSpec = &FieldSpec::new("VALID", 4, 1, Access::WriteOnly);
pub(crate) const ADDR: &FieldSpec = &FieldSpec::new("ADDR", 5, 27, Access::ReadWrite);
}
pub(crate) mod mpu_rasr {
use super::{Access, FieldSpec};
pub(crate) const ENABLE: &FieldSpec = &FieldSpec::new("ENABLE", 0, 1, Access::ReadWrite);
pub(crate) const SIZE: &FieldSpec = &FieldSpec::new("SIZE", 1, 5, Access::ReadWrite);
pub(crate) const SRD: &FieldSpec = &FieldSpec::new("SRD", 8, 8, Access::ReadWrite);
pub(crate) const B: &FieldSpec = &FieldSpec::new("B", 16, 1, Access::ReadWrite);
pub(crate) const C: &FieldSpec = &FieldSpec::new("C", 17, 1, Access::ReadWrite);
pub(crate) const S: &FieldSpec = &FieldSpec::new("S", 18, 1, Access::ReadWrite);
pub(crate) const TEX: &FieldSpec = &FieldSpec::new("TEX", 19, 3, Access::ReadWrite);
pub(crate) const AP: &FieldSpec = &FieldSpec::new("AP", 24, 3, Access::ReadWrite);
pub(crate) const XN: &FieldSpec = &FieldSpec::new("XN", 28, 1, Access::ReadWrite);
}
pub(crate) mod dhcsr {
use super::{Access, FieldSpec};
pub(crate) const S_LOCKUP: &FieldSpec = &FieldSpec::new("S_LOCKUP", 19, 1, Access::ReadOnly);
pub(crate) const S_SLEEP: &FieldSpec = &FieldSpec::new("S_SLEEP", 18, 1, Access::ReadOnly);
pub(crate) const S_HALT: &FieldSpec = &FieldSpec::new("S_HALT", 17, 1, Access::ReadOnly);
pub(crate) const S_REGRDY: &FieldSpec = &FieldSpec::new("S_REGRDY", 16, 1, Access::ReadOnly);
pub(crate) const C_MASKINTS: &FieldSpec =
&FieldSpec::new("C_MASKINTS", 3, 1, Access::ReadWrite);
pub(crate) const C_STEP: &FieldSpec = &FieldSpec::new("C_STEP", 2, 1, Access::ReadWrite);
pub(crate) const C_HALT: &FieldSpec = &FieldSpec::new("C_HALT", 1, 1, Access::ReadWrite);
pub(crate) const C_DEBUGEN: &FieldSpec = &FieldSpec::new("C_DEBUGEN", 0, 1, Access::ReadWrite);
}
pub(crate) mod demcr {
use super::{Access, FieldSpec};
pub(crate) const TRCENA: &FieldSpec = &FieldSpec::new("TRCENA", 24, 1, Access::ReadWrite);
pub(crate) const MON_REQ: &FieldSpec = &FieldSpec::new("MON_REQ", 19, 1, Access::ReadWrite);
pub(crate) const MON_STEP: &FieldSpec = &FieldSpec::new("MON_STEP", 18, 1, Access::ReadWrite);
pub(crate) const MON_PEND: &FieldSpec = &FieldSpec::new("MON_PEND", 17, 1, Access::ReadWrite);
pub(crate) const MON_EN: &FieldSpec = &FieldSpec::new("MON_EN", 16, 1, Access::ReadWrite);
pub(crate) const VC_HARDERR: &FieldSpec =
&FieldSpec::new("VC_HARDERR", 10, 1, Access::ReadWrite);
pub(crate) const VC_INTERR: &FieldSpec = &FieldSpec::new("VC_INTERR", 9, 1, Access::ReadWrite);
pub(crate) const VC_BUSERR: &FieldSpec = &FieldSpec::new("VC_BUSERR", 8, 1, Access::ReadWrite);
pub(crate) const VC_STATERR: &FieldSpec =
&FieldSpec::new("VC_STATERR", 7, 1, Access::ReadWrite);
pub(crate) const VC_CHKERR: &FieldSpec = &FieldSpec::new("VC_CHKERR", 6, 1, Access::ReadWrite);
pub(crate) const VC_NOCPERR: &FieldSpec =
&FieldSpec::new("VC_NOCPERR", 5, 1, Access::ReadWrite);
pub(crate) const VC_MMERR: &FieldSpec = &FieldSpec::new("VC_MMERR", 4, 1, Access::ReadWrite);
pub(crate) const VC_CORERESET: &FieldSpec =
&FieldSpec::new("VC_CORERESET", 0, 1, Access::ReadWrite);
}
pub(crate) mod dfsr {
use super::{Access, FieldSpec};
pub(crate) const VCATCH: &FieldSpec = &FieldSpec::new("VCATCH", 3, 1, Access::ReadWrite);
pub(crate) const DWTTRAP: &FieldSpec = &FieldSpec::new("DWTTRAP", 2, 1, Access::ReadWrite);
pub(crate) const BKPT: &FieldSpec = &FieldSpec::new("BKPT", 1, 1, Access::ReadWrite);
pub(crate) const HALTED: &FieldSpec = &FieldSpec::new("HALTED", 0, 1, Access::ReadWrite);
}
pub(crate) mod itm_tcr {
use super::{Access, FieldSpec};
pub(crate) const BUSY: &FieldSpec = &FieldSpec::new("BUSY", 23, 1, Access::ReadOnly);
pub(crate) const TRACEBUSID: &FieldSpec =
&FieldSpec::new("TraceBusID", 16, 7, Access::ReadWrite);
pub(crate) const GTSFREQ: &FieldSpec = &FieldSpec::new("GTSFREQ", 10, 2, Access::ReadWrite);
pub(crate) const TSPRESCALE: &FieldSpec =
&FieldSpec::new("TSPrescale", 8, 2, Access::ReadWrite);
pub(crate) const SWOENA: &FieldSpec = &FieldSpec::new("SWOENA", 4, 1, Access::ReadWrite);
pub(crate) const TXENA: &FieldSpec = &FieldSpec::new("TXENA", 3, 1, Access::ReadWrite);
pub(crate) const SYNCENA: &FieldSpec = &FieldSpec::new("SYNCENA", 2, 1, Access::ReadWrite);
pub(crate) const TSENA: &FieldSpec = &FieldSpec::new("TSENA", 1, 1, Access::ReadWrite);
pub(crate) const ITMENA: &FieldSpec = &FieldSpec::new("ITMENA", 0, 1, Access::ReadWrite);
}
pub(crate) const fn stimena(port: u8) -> FieldSpec {
FieldSpec::new("STIMENA", port, 1, Access::ReadWrite)
}
pub(crate) mod itm_tpr {
use super::{Access, FieldSpec};
pub(crate) const PRIVMASK: &FieldSpec = &FieldSpec::new("PRIVMASK", 0, 4, Access::ReadWrite);
}
pub(crate) const fn privmask(group: u8) -> FieldSpec {
FieldSpec::new("PRIVMASK", group, 1, Access::ReadWrite)
}
pub(crate) mod itm_stim {
use super::{Access, FieldSpec};
pub(crate) const FIFOREADY: &FieldSpec = &FieldSpec::new("FIFOREADY", 0, 1, Access::ReadOnly);
}
pub(crate) mod instrumentation {
use super::{Access, FieldSpec};
pub(crate) const A: &FieldSpec = &FieldSpec::new("A", 3, 5, Access::ReadWrite);
pub(crate) const SS: &FieldSpec = &FieldSpec::new("SS", 0, 2, Access::ReadWrite);
}