diff options
| author | Jorge Aparicio <jorge@japaric.io> | 2018-06-30 14:56:08 -0500 |
|---|---|---|
| committer | Jorge Aparicio <jorge@japaric.io> | 2018-07-05 16:44:29 -0500 |
| commit | bbf688a84de7001d033764b848a50cbad42f3d5a (patch) | |
| tree | 1a631bf9f7239612dcc09c72be1df3d749a39850 /src/liballoc/task.rs | |
| parent | 94eb1760551096363ec04e42367b6b195592dbd8 (diff) | |
| download | rust-bbf688a84de7001d033764b848a50cbad42f3d5a.tar.gz rust-bbf688a84de7001d033764b848a50cbad42f3d5a.zip | |
enable Atomic*.{load,store} for ARMv6-M / MSP430
closes #45085 this commit adds an `atomic_cas` target option and an unstable `#[cfg(target_has_atomic_cas)]` attribute to enable a subset of the `Atomic*` API on architectures that don't support atomic CAS natively, like MSP430 and ARMv6-M.
Diffstat (limited to 'src/liballoc/task.rs')
| -rw-r--r-- | src/liballoc/task.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/liballoc/task.rs b/src/liballoc/task.rs index f14fe3a20da..c8e3e770ed2 100644 --- a/src/liballoc/task.rs +++ b/src/liballoc/task.rs @@ -12,10 +12,12 @@ pub use core::task::*; -#[cfg(target_has_atomic = "ptr")] +#[cfg_attr(stage0, cfg(target_has_atomic = "ptr"))] +#[cfg_attr(not(stage0), cfg(all(target_has_atomic = "ptr", target_has_atomic_cas)))] pub use self::if_arc::*; -#[cfg(target_has_atomic = "ptr")] +#[cfg_attr(stage0, cfg(target_has_atomic = "ptr"))] +#[cfg_attr(not(stage0), cfg(all(target_has_atomic = "ptr", target_has_atomic_cas)))] mod if_arc { use super::*; use core::marker::PhantomData; @@ -47,7 +49,8 @@ mod if_arc { } } - #[cfg(target_has_atomic = "ptr")] + #[cfg_attr(stage0, cfg(target_has_atomic = "ptr"))] + #[cfg_attr(not(stage0), cfg(all(target_has_atomic = "ptr", target_has_atomic_cas)))] struct ArcWrapped<T>(PhantomData<T>); unsafe impl<T: Wake + 'static> UnsafeWake for ArcWrapped<T> { |
