diff options
Diffstat (limited to 'src/system_control/cpuid.rs')
| -rw-r--r-- | src/system_control/cpuid.rs | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/src/system_control/cpuid.rs b/src/system_control/cpuid.rs new file mode 100644 index 0000000..4418397 --- /dev/null +++ b/src/system_control/cpuid.rs @@ -0,0 +1,128 @@ +#[doc = "Register `CPUID` reader"] +pub struct R(crate::R<CPUID_SPEC>); +impl core::ops::Deref for R { + type Target = crate::R<CPUID_SPEC>; + #[inline(always)] + fn deref(&self) -> &Self::Target { + &self.0 + } +} +impl From<crate::R<CPUID_SPEC>> for R { + #[inline(always)] + fn from(reader: crate::R<CPUID_SPEC>) -> Self { + R(reader) + } +} +#[doc = "Field `REVISION` reader - Minor revision number"] +pub struct REVISION_R(crate::FieldReader<u8, u8>); +impl REVISION_R { + pub(crate) fn new(bits: u8) -> Self { + REVISION_R(crate::FieldReader::new(bits)) + } +} +impl core::ops::Deref for REVISION_R { + type Target = crate::FieldReader<u8, u8>; + #[inline(always)] + fn deref(&self) -> &Self::Target { + &self.0 + } +} +#[doc = "Field `PARTNO` reader - Processor Part Number, 0xC60=Cortex-M0+"] +pub struct PARTNO_R(crate::FieldReader<u16, u16>); +impl PARTNO_R { + pub(crate) fn new(bits: u16) -> Self { + PARTNO_R(crate::FieldReader::new(bits)) + } +} +impl core::ops::Deref for PARTNO_R { + type Target = crate::FieldReader<u16, u16>; + #[inline(always)] + fn deref(&self) -> &Self::Target { + &self.0 + } +} +#[doc = "Field `ARCHITECTURE` reader - Processor Architecture, 0xC=ARMv6-M"] +pub struct ARCHITECTURE_R(crate::FieldReader<u8, u8>); +impl ARCHITECTURE_R { + pub(crate) fn new(bits: u8) -> Self { + ARCHITECTURE_R(crate::FieldReader::new(bits)) + } +} +impl core::ops::Deref for ARCHITECTURE_R { + type Target = crate::FieldReader<u8, u8>; + #[inline(always)] + fn deref(&self) -> &Self::Target { + &self.0 + } +} +#[doc = "Field `VARIANT` reader - Major revision number"] +pub struct VARIANT_R(crate::FieldReader<u8, u8>); +impl VARIANT_R { + pub(crate) fn new(bits: u8) -> Self { + VARIANT_R(crate::FieldReader::new(bits)) + } +} +impl core::ops::Deref for VARIANT_R { + type Target = crate::FieldReader<u8, u8>; + #[inline(always)] + fn deref(&self) -> &Self::Target { + &self.0 + } +} +#[doc = "Field `IMPLEMENTER` reader - Implementer code, ARM=0x41"] +pub struct IMPLEMENTER_R(crate::FieldReader<u8, u8>); +impl IMPLEMENTER_R { + pub(crate) fn new(bits: u8) -> Self { + IMPLEMENTER_R(crate::FieldReader::new(bits)) + } +} +impl core::ops::Deref for IMPLEMENTER_R { + type Target = crate::FieldReader<u8, u8>; + #[inline(always)] + fn deref(&self) -> &Self::Target { + &self.0 + } +} +impl R { + #[doc = "Bits 0:3 - Minor revision number"] + #[inline(always)] + pub fn revision(&self) -> REVISION_R { + REVISION_R::new((self.bits & 0x0f) as u8) + } + #[doc = "Bits 4:15 - Processor Part Number, 0xC60=Cortex-M0+"] + #[inline(always)] + pub fn partno(&self) -> PARTNO_R { + PARTNO_R::new(((self.bits >> 4) & 0x0fff) as u16) + } + #[doc = "Bits 16:19 - Processor Architecture, 0xC=ARMv6-M"] + #[inline(always)] + pub fn architecture(&self) -> ARCHITECTURE_R { + ARCHITECTURE_R::new(((self.bits >> 16) & 0x0f) as u8) + } + #[doc = "Bits 20:23 - Major revision number"] + #[inline(always)] + pub fn variant(&self) -> VARIANT_R { + VARIANT_R::new(((self.bits >> 20) & 0x0f) as u8) + } + #[doc = "Bits 24:31 - Implementer code, ARM=0x41"] + #[inline(always)] + pub fn implementer(&self) -> IMPLEMENTER_R { + IMPLEMENTER_R::new(((self.bits >> 24) & 0xff) as u8) + } +} +#[doc = "CPUID Base Register\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [cpuid](index.html) module"] +pub struct CPUID_SPEC; +impl crate::RegisterSpec for CPUID_SPEC { + type Ux = u32; +} +#[doc = "`read()` method returns [cpuid::R](R) reader structure"] +impl crate::Readable for CPUID_SPEC { + type Reader = R; +} +#[doc = "`reset()` method sets CPUID to value 0x410c_c601"] +impl crate::Resettable for CPUID_SPEC { + #[inline(always)] + fn reset_value() -> Self::Ux { + 0x410c_c601 + } +} |
