Skip to content
Snippets Groups Projects
Commit 1aee43cc authored by Jorge Aparicio's avatar Jorge Aparicio
Browse files

impl Send for all the peripherals

parent 7ab9cf4b
Branches
Tags
No related merge requests found
...@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ...@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased] ## [Unreleased]
## [v0.4.2] - 2018-01-17
### Fixed
- Added a missing `Send` implementation to all the peripherals.
## [v0.4.1] - 2018-01-16 ## [v0.4.1] - 2018-01-16
### Changed ### Changed
...@@ -385,7 +391,8 @@ fn main() { ...@@ -385,7 +391,8 @@ fn main() {
- Functions to get the vector table - Functions to get the vector table
- Wrappers over miscellaneous instructions like `bkpt` - Wrappers over miscellaneous instructions like `bkpt`
[Unreleased]: https://github.com/japaric/cortex-m/compare/v0.4.1...HEAD [Unreleased]: https://github.com/japaric/cortex-m/compare/v0.4.2...HEAD
[v0.4.2]: https://github.com/japaric/cortex-m/compare/v0.4.1...v0.4.2
[v0.4.1]: https://github.com/japaric/cortex-m/compare/v0.4.0...v0.4.1 [v0.4.1]: https://github.com/japaric/cortex-m/compare/v0.4.0...v0.4.1
[v0.4.0]: https://github.com/japaric/cortex-m/compare/v0.3.1...v0.4.0 [v0.4.0]: https://github.com/japaric/cortex-m/compare/v0.3.1...v0.4.0
[v0.3.1]: https://github.com/japaric/cortex-m/compare/v0.3.0...v0.3.1 [v0.3.1]: https://github.com/japaric/cortex-m/compare/v0.3.0...v0.3.1
......
...@@ -7,7 +7,7 @@ keywords = ["arm", "cortex-m", "register", "peripheral"] ...@@ -7,7 +7,7 @@ keywords = ["arm", "cortex-m", "register", "peripheral"]
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
name = "cortex-m" name = "cortex-m"
repository = "https://github.com/japaric/cortex-m" repository = "https://github.com/japaric/cortex-m"
version = "0.4.1" version = "0.4.2"
[dependencies] [dependencies]
aligned = "0.1.1" aligned = "0.1.1"
......
...@@ -220,6 +220,9 @@ pub struct CBP { ...@@ -220,6 +220,9 @@ pub struct CBP {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
#[cfg(any(armv7m, target_arch = "x86_64"))]
unsafe impl Send for CBP {}
#[cfg(any(armv7m, target_arch = "x86_64"))] #[cfg(any(armv7m, target_arch = "x86_64"))]
impl CBP { impl CBP {
pub(crate) unsafe fn new() -> Self { pub(crate) unsafe fn new() -> Self {
...@@ -234,9 +237,6 @@ impl CBP { ...@@ -234,9 +237,6 @@ impl CBP {
} }
} }
#[cfg(any(armv7m, target_arch = "x86_64"))]
unsafe impl Send for CBP {}
#[cfg(any(armv7m, target_arch = "x86_64"))] #[cfg(any(armv7m, target_arch = "x86_64"))]
impl ops::Deref for CBP { impl ops::Deref for CBP {
type Target = self::cbp::RegisterBlock; type Target = self::cbp::RegisterBlock;
...@@ -251,6 +251,8 @@ pub struct CPUID { ...@@ -251,6 +251,8 @@ pub struct CPUID {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
unsafe impl Send for CPUID {}
impl CPUID { impl CPUID {
/// Returns a pointer to the register block /// Returns a pointer to the register block
pub fn ptr() -> *const self::cpuid::RegisterBlock { pub fn ptr() -> *const self::cpuid::RegisterBlock {
...@@ -271,6 +273,8 @@ pub struct DCB { ...@@ -271,6 +273,8 @@ pub struct DCB {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
unsafe impl Send for DCB {}
impl DCB { impl DCB {
/// Returns a pointer to the register block /// Returns a pointer to the register block
pub fn ptr() -> *const dcb::RegisterBlock { pub fn ptr() -> *const dcb::RegisterBlock {
...@@ -291,6 +295,8 @@ pub struct DWT { ...@@ -291,6 +295,8 @@ pub struct DWT {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
unsafe impl Send for DWT {}
impl DWT { impl DWT {
/// Returns a pointer to the register block /// Returns a pointer to the register block
pub fn ptr() -> *const dwt::RegisterBlock { pub fn ptr() -> *const dwt::RegisterBlock {
...@@ -314,6 +320,9 @@ pub struct FPB { ...@@ -314,6 +320,9 @@ pub struct FPB {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
#[cfg(any(armv7m, target_arch = "x86_64"))]
unsafe impl Send for FPB {}
#[cfg(any(armv7m, target_arch = "x86_64"))] #[cfg(any(armv7m, target_arch = "x86_64"))]
impl FPB { impl FPB {
/// Returns a pointer to the register block /// Returns a pointer to the register block
...@@ -339,6 +348,9 @@ pub struct FPU { ...@@ -339,6 +348,9 @@ pub struct FPU {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
#[cfg(any(has_fpu, target_arch = "x86_64"))]
unsafe impl Send for FPU {}
#[cfg(any(has_fpu, target_arch = "x86_64"))] #[cfg(any(has_fpu, target_arch = "x86_64"))]
impl FPU { impl FPU {
/// Returns a pointer to the register block /// Returns a pointer to the register block
...@@ -364,6 +376,9 @@ pub struct ITM { ...@@ -364,6 +376,9 @@ pub struct ITM {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
#[cfg(any(armv7m, target_arch = "x86_64"))]
unsafe impl Send for ITM {}
#[cfg(any(armv7m, target_arch = "x86_64"))] #[cfg(any(armv7m, target_arch = "x86_64"))]
impl ITM { impl ITM {
/// Returns a pointer to the register block /// Returns a pointer to the register block
...@@ -393,6 +408,8 @@ pub struct MPU { ...@@ -393,6 +408,8 @@ pub struct MPU {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
unsafe impl Send for MPU {}
impl MPU { impl MPU {
/// Returns a pointer to the register block /// Returns a pointer to the register block
pub fn ptr() -> *const mpu::RegisterBlock { pub fn ptr() -> *const mpu::RegisterBlock {
...@@ -413,6 +430,8 @@ pub struct NVIC { ...@@ -413,6 +430,8 @@ pub struct NVIC {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
unsafe impl Send for NVIC {}
impl NVIC { impl NVIC {
/// Returns a pointer to the register block /// Returns a pointer to the register block
pub fn ptr() -> *const nvic::RegisterBlock { pub fn ptr() -> *const nvic::RegisterBlock {
...@@ -433,6 +452,8 @@ pub struct SCB { ...@@ -433,6 +452,8 @@ pub struct SCB {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
unsafe impl Send for SCB {}
impl SCB { impl SCB {
/// Returns a pointer to the register block /// Returns a pointer to the register block
pub fn ptr() -> *const scb::RegisterBlock { pub fn ptr() -> *const scb::RegisterBlock {
...@@ -453,6 +474,8 @@ pub struct SYST { ...@@ -453,6 +474,8 @@ pub struct SYST {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
unsafe impl Send for SYST {}
impl SYST { impl SYST {
/// Returns a pointer to the register block /// Returns a pointer to the register block
pub fn ptr() -> *const syst::RegisterBlock { pub fn ptr() -> *const syst::RegisterBlock {
...@@ -476,6 +499,9 @@ pub struct TPIU { ...@@ -476,6 +499,9 @@ pub struct TPIU {
_marker: PhantomData<*const ()>, _marker: PhantomData<*const ()>,
} }
#[cfg(any(armv7m, target_arch = "x86_64"))]
unsafe impl Send for TPIU {}
#[cfg(any(armv7m, target_arch = "x86_64"))] #[cfg(any(armv7m, target_arch = "x86_64"))]
impl TPIU { impl TPIU {
/// Returns a pointer to the register block /// Returns a pointer to the register block
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment