portable_atomic/imp/atomic64/
mod.rs

1// SPDX-License-Identifier: Apache-2.0 OR MIT
2
3/*
464-bit atomic implementations on 32-bit architectures
5
6See README.md for details.
7*/
8
9// pre-v6 Arm Linux
10#[cfg(feature = "fallback")]
11// Miri and Sanitizer do not support inline assembly.
12#[cfg(all(
13    target_arch = "arm",
14    not(any(miri, portable_atomic_sanitize_thread)),
15    any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
16    any(target_os = "linux", target_os = "android"),
17    not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
18    not(portable_atomic_no_outline_atomics),
19))]
20#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_64))]
21#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "64")))]
22pub(super) mod arm_linux;
23
24// riscv32
25// Miri and Sanitizer do not support inline assembly.
26#[cfg(all(
27    target_arch = "riscv32",
28    not(any(miri, portable_atomic_sanitize_thread)),
29    any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
30    any(
31        target_feature = "zacas",
32        portable_atomic_target_feature = "zacas",
33        all(
34            feature = "fallback",
35            not(portable_atomic_no_outline_atomics),
36            any(target_os = "linux", target_os = "android"),
37        ),
38    ),
39))]
40pub(super) mod riscv32;