1 // SPDX-License-Identifier: Apache-2.0 OR MIT 2 3 /* 4 64-bit atomic implementations on 32-bit architectures 5 6 See 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")))] 22 pub(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 not(portable_atomic_no_asm), 30 not(portable_atomic_pre_llvm_19), 31 any( 32 target_feature = "experimental-zacas", 33 portable_atomic_target_feature = "experimental-zacas", 34 all( 35 feature = "fallback", 36 not(portable_atomic_no_outline_atomics), 37 any(test, portable_atomic_outline_atomics), // TODO(riscv): currently disabled by default 38 any(target_os = "linux", target_os = "android"), 39 ), 40 ), 41 ))] 42 pub(super) mod riscv32; 43