From a8962d44d46ef3c16b3e5fb645fead4731cd2b24 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio <jorge@japaric.io> Date: Mon, 15 Jan 2018 19:22:20 +0100 Subject: [PATCH] fixes and make sure the whole documentation is visible on docs.rs --- src/lib.rs | 2 + src/peripheral/cbp.rs | 2 + src/peripheral/cpuid.rs | 16 +++---- src/peripheral/fpb.rs | 2 + src/peripheral/fpu.rs | 2 + src/peripheral/itm.rs | 2 + src/peripheral/mod.rs | 103 ++++++++++++++++++++++------------------ src/peripheral/scb.rs | 12 ++--- src/peripheral/tpiu.rs | 2 + 9 files changed, 83 insertions(+), 60 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index aabd189..9c00cea 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -24,6 +24,8 @@ mod macros; pub mod asm; pub mod exception; pub mod interrupt; +// NOTE(target_arch) is for documentation purposes +#[cfg(any(armv7m, target_arch = "x86_64"))] pub mod itm; pub mod peripheral; pub mod register; diff --git a/src/peripheral/cbp.rs b/src/peripheral/cbp.rs index 590cb7b..2535d0b 100644 --- a/src/peripheral/cbp.rs +++ b/src/peripheral/cbp.rs @@ -1,4 +1,6 @@ //! Cache and branch predictor maintenance operations +//! +//! *NOTE* Available only on ARMv7-M (`thumbv7*m-none-eabi*`) use volatile_register::WO; diff --git a/src/peripheral/cpuid.rs b/src/peripheral/cpuid.rs index 624d5c5..94a2c20 100644 --- a/src/peripheral/cpuid.rs +++ b/src/peripheral/cpuid.rs @@ -1,10 +1,10 @@ //! CPUID use volatile_register::RO; -#[cfg(any(armv7m, test))] +#[cfg(any(armv7m, target_arch = "x86_64"))] use volatile_register::RW; -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] use peripheral::CPUID; /// Register block @@ -25,21 +25,21 @@ pub struct RegisterBlock { pub isar: [RO<u32>; 5], reserved1: u32, /// Cache Level ID - #[cfg(any(armv7m, test))] + #[cfg(any(armv7m, target_arch = "x86_64"))] pub clidr: RO<u32>, /// Cache Type - #[cfg(any(armv7m, test))] + #[cfg(any(armv7m, target_arch = "x86_64"))] pub ctr: RO<u32>, /// Cache Size ID - #[cfg(any(armv7m, test))] + #[cfg(any(armv7m, target_arch = "x86_64"))] pub ccsidr: RO<u32>, /// Cache Size Selection - #[cfg(any(armv7m, test))] + #[cfg(any(armv7m, target_arch = "x86_64"))] pub csselr: RW<u32>, } /// Type of cache to select on CSSELR writes. -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] pub enum CsselrCacheType { /// Select DCache or unified cache DataOrUnified = 0, @@ -47,7 +47,7 @@ pub enum CsselrCacheType { Instruction = 1, } -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] impl CPUID { /// Selects the current CCSIDR /// diff --git a/src/peripheral/fpb.rs b/src/peripheral/fpb.rs index 0da2d5d..215d4ff 100644 --- a/src/peripheral/fpb.rs +++ b/src/peripheral/fpb.rs @@ -1,4 +1,6 @@ //! Flash Patch and Breakpoint unit +//! +//! *NOTE* Available only on ARMv7-M (`thumbv7*m-none-eabi*`) use volatile_register::{RO, RW, WO}; diff --git a/src/peripheral/fpu.rs b/src/peripheral/fpu.rs index f1d4753..c4e8a1d 100644 --- a/src/peripheral/fpu.rs +++ b/src/peripheral/fpu.rs @@ -1,4 +1,6 @@ //! Floating Point Unit +//! +//! *NOTE* Available only on ARMv7E-M (`thumbv7em-none-eabihf`) use volatile_register::{RO, RW}; diff --git a/src/peripheral/itm.rs b/src/peripheral/itm.rs index fd4a2fd..b424817 100644 --- a/src/peripheral/itm.rs +++ b/src/peripheral/itm.rs @@ -1,4 +1,6 @@ //! Instrumentation Trace Macrocell +//! +//! *NOTE* Available only on ARMv7-M (`thumbv7*m-none-eabi*`) use core::cell::UnsafeCell; use core::ptr; diff --git a/src/peripheral/mod.rs b/src/peripheral/mod.rs index 67bcb21..2abe79f 100644 --- a/src/peripheral/mod.rs +++ b/src/peripheral/mod.rs @@ -70,26 +70,27 @@ #![allow(private_no_mangle_statics)] use core::marker::PhantomData; -use core::ops::{Deref, DerefMut}; +use core::ops; use interrupt; -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] pub mod cbp; pub mod cpuid; pub mod dcb; pub mod dwt; -#[cfg(any(armv7m, test))] +#[cfg(any(armv7m, target_arch = "x86_64"))] pub mod fpb; -#[cfg(any(has_fpu, test))] +#[cfg(any(has_fpu, target_arch = "x86_64"))] pub mod fpu; -#[cfg(any(armv7m, test))] +// NOTE(target_arch) is for documentation purposes +#[cfg(any(armv7m, target_arch = "x86_64"))] pub mod itm; pub mod mpu; pub mod nvic; pub mod scb; pub mod syst; -#[cfg(any(armv7m, test))] +#[cfg(any(armv7m, target_arch = "x86_64"))] pub mod tpiu; #[cfg(test)] @@ -101,7 +102,7 @@ mod test; #[allow(non_snake_case)] pub struct Peripherals { /// Cache and branch predictor maintenance operations - #[cfg(armv7m)] + #[cfg(any(armv7m, target_arch = "x86_64"))] pub CBP: CBP, /// CPUID pub CPUID: CPUID, @@ -110,13 +111,13 @@ pub struct Peripherals { /// Data Watchpoint and Trace unit pub DWT: DWT, /// Flash Patch and Breakpoint unit - #[cfg(armv7m)] + #[cfg(any(armv7m, target_arch = "x86_64"))] pub FPB: FPB, /// Floating Point Unit - #[cfg(has_fpu)] + #[cfg(any(has_fpu, target_arch = "x86_64"))] pub FPU: FPU, /// Instrumentation Trace Macrocell - #[cfg(armv7m)] + #[cfg(any(armv7m, target_arch = "x86_64"))] pub ITM: ITM, /// Memory Protection Unit pub MPU: MPU, @@ -127,7 +128,7 @@ pub struct Peripherals { /// SysTick: System Timer pub SYST: SYST, /// Trace Port Interface Unit; - #[cfg(armv7m)] + #[cfg(any(armv7m, target_arch = "x86_64"))] pub TPIU: TPIU, } @@ -156,7 +157,7 @@ impl Peripherals { CORE_PERIPHERALS = true; Peripherals { - #[cfg(armv7m)] + #[cfg(any(armv7m, target_arch = "x86_64"))] CBP: CBP { _marker: PhantomData, }, @@ -169,15 +170,15 @@ impl Peripherals { DWT: DWT { _marker: PhantomData, }, - #[cfg(armv7m)] + #[cfg(any(armv7m, target_arch = "x86_64"))] FPB: FPB { _marker: PhantomData, }, - #[cfg(has_fpu)] + #[cfg(any(has_fpu, target_arch = "x86_64"))] FPU: FPU { _marker: PhantomData, }, - #[cfg(armv7m)] + #[cfg(any(armv7m, target_arch = "x86_64"))] ITM: ITM { _marker: PhantomData, }, @@ -193,7 +194,7 @@ impl Peripherals { SYST: SYST { _marker: PhantomData, }, - #[cfg(armv7m)] + #[cfg(any(armv7m, target_arch = "x86_64"))] TPIU: TPIU { _marker: PhantomData, }, @@ -202,12 +203,14 @@ impl Peripherals { } /// Cache and branch predictor maintenance operations -#[cfg(armv7m)] +/// +/// *NOTE* Available only on ARMv7-M (`thumbv7*m-none-eabi*`) +#[cfg(any(armv7m, target_arch = "x86_64"))] pub struct CBP { _marker: PhantomData<*const ()>, } -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] impl CBP { pub(crate) unsafe fn new() -> Self { CBP { @@ -221,11 +224,11 @@ impl CBP { } } -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] unsafe impl Send for CBP {} -#[cfg(armv7m)] -impl Deref for CBP { +#[cfg(any(armv7m, target_arch = "x86_64"))] +impl ops::Deref for CBP { type Target = self::cbp::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -245,7 +248,7 @@ impl CPUID { } } -impl Deref for CPUID { +impl ops::Deref for CPUID { type Target = self::cpuid::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -265,7 +268,7 @@ impl DCB { } } -impl Deref for DCB { +impl ops::Deref for DCB { type Target = self::dcb::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -285,7 +288,7 @@ impl DWT { } } -impl Deref for DWT { +impl ops::Deref for DWT { type Target = self::dwt::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -294,12 +297,14 @@ impl Deref for DWT { } /// Flash Patch and Breakpoint unit -#[cfg(any(armv7m, test))] +/// +/// *NOTE* Available only on ARMv7-M (`thumbv7*m-none-eabi*`) +#[cfg(any(armv7m, target_arch = "x86_64"))] pub struct FPB { _marker: PhantomData<*const ()>, } -#[cfg(any(armv7m, test))] +#[cfg(any(armv7m, target_arch = "x86_64"))] impl FPB { /// Returns a pointer to the register block pub fn ptr() -> *const fpb::RegisterBlock { @@ -307,8 +312,8 @@ impl FPB { } } -#[cfg(armv7m)] -impl Deref for FPB { +#[cfg(any(armv7m, target_arch = "x86_64"))] +impl ops::Deref for FPB { type Target = self::fpb::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -317,12 +322,14 @@ impl Deref for FPB { } /// Floating Point Unit -#[cfg(any(has_fpu, test))] +/// +/// *NOTE* Available only on ARMv7E-M (`thumbv7em-none-eabihf`) +#[cfg(any(has_fpu, target_arch = "x86_64"))] pub struct FPU { _marker: PhantomData<*const ()>, } -#[cfg(any(has_fpu, test))] +#[cfg(any(has_fpu, target_arch = "x86_64"))] impl FPU { /// Returns a pointer to the register block pub fn ptr() -> *const fpu::RegisterBlock { @@ -330,8 +337,8 @@ impl FPU { } } -#[cfg(has_fpu)] -impl Deref for FPU { +#[cfg(any(has_fpu, target_arch = "x86_64"))] +impl ops::Deref for FPU { type Target = self::fpu::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -340,12 +347,14 @@ impl Deref for FPU { } /// Instrumentation Trace Macrocell -#[cfg(any(armv7m, test))] +/// +/// *NOTE* Available only on ARMv7-M (`thumbv7*m-none-eabi*`) +#[cfg(any(armv7m, target_arch = "x86_64"))] pub struct ITM { _marker: PhantomData<*const ()>, } -#[cfg(any(armv7m, test))] +#[cfg(any(armv7m, target_arch = "x86_64"))] impl ITM { /// Returns a pointer to the register block pub fn ptr() -> *mut itm::RegisterBlock { @@ -353,8 +362,8 @@ impl ITM { } } -#[cfg(armv7m)] -impl Deref for ITM { +#[cfg(any(armv7m, target_arch = "x86_64"))] +impl ops::Deref for ITM { type Target = self::itm::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -362,8 +371,8 @@ impl Deref for ITM { } } -#[cfg(armv7m)] -impl DerefMut for ITM { +#[cfg(any(armv7m, target_arch = "x86_64"))] +impl ops::DerefMut for ITM { fn deref_mut(&mut self) -> &mut Self::Target { unsafe { &mut *Self::ptr() } } @@ -381,7 +390,7 @@ impl MPU { } } -impl Deref for MPU { +impl ops::Deref for MPU { type Target = self::mpu::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -401,7 +410,7 @@ impl NVIC { } } -impl Deref for NVIC { +impl ops::Deref for NVIC { type Target = self::nvic::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -421,7 +430,7 @@ impl SCB { } } -impl Deref for SCB { +impl ops::Deref for SCB { type Target = self::scb::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -441,7 +450,7 @@ impl SYST { } } -impl Deref for SYST { +impl ops::Deref for SYST { type Target = self::syst::RegisterBlock; fn deref(&self) -> &Self::Target { @@ -450,12 +459,14 @@ impl Deref for SYST { } /// Trace Port Interface Unit; -#[cfg(any(armv7m, test))] +/// +/// *NOTE* Available only on ARMv7-M (`thumbv7*m-none-eabi*`) +#[cfg(any(armv7m, target_arch = "x86_64"))] pub struct TPIU { _marker: PhantomData<*const ()>, } -#[cfg(any(armv7m, test))] +#[cfg(any(armv7m, target_arch = "x86_64"))] impl TPIU { /// Returns a pointer to the register block pub fn ptr() -> *const tpiu::RegisterBlock { @@ -463,8 +474,8 @@ impl TPIU { } } -#[cfg(armv7m)] -impl Deref for TPIU { +#[cfg(any(armv7m, target_arch = "x86_64"))] +impl ops::Deref for TPIU { type Target = self::tpiu::RegisterBlock; fn deref(&self) -> &Self::Target { diff --git a/src/peripheral/scb.rs b/src/peripheral/scb.rs index 9a922c7..41f3825 100644 --- a/src/peripheral/scb.rs +++ b/src/peripheral/scb.rs @@ -2,11 +2,11 @@ use volatile_register::RW; -#[cfg(any(armv7m, has_fpu))] +#[cfg(any(armv7m, has_fpu, target_arch = "x86_64"))] use super::{CBP, SCB}; -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] use super::CPUID; -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] use super::cpuid::CsselrCacheType; /// Register block @@ -108,16 +108,16 @@ impl SCB { } } -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] mod scb_consts { pub const SCB_CCR_IC_MASK: u32 = (1 << 17); pub const SCB_CCR_DC_MASK: u32 = (1 << 16); } -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] use self::scb_consts::*; -#[cfg(armv7m)] +#[cfg(any(armv7m, target_arch = "x86_64"))] impl SCB { /// Enables I-Cache if currently disabled #[inline] diff --git a/src/peripheral/tpiu.rs b/src/peripheral/tpiu.rs index 7a08805..4115bb3 100644 --- a/src/peripheral/tpiu.rs +++ b/src/peripheral/tpiu.rs @@ -1,4 +1,6 @@ //! Trace Port Interface Unit; +//! +//! *NOTE* Available only on ARMv7-M (`thumbv7*m-none-eabi*`) use volatile_register::{RO, RW, WO}; -- GitLab