diff options
author | Valentin Popov <valentin@popov.link> | 2024-07-19 15:37:58 +0300 |
---|---|---|
committer | Valentin Popov <valentin@popov.link> | 2024-07-19 15:37:58 +0300 |
commit | a990de90fe41456a23e58bd087d2f107d321f3a1 (patch) | |
tree | 15afc392522a9e85dc3332235e311b7d39352ea9 /vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs | |
parent | 3d48cd3f81164bbfc1a755dc1d4a9a02f98c8ddd (diff) | |
download | fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.tar.xz fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.zip |
Deleted vendor folder
Diffstat (limited to 'vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs')
-rw-r--r-- | vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs deleted file mode 100644 index 978418c..0000000 --- a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs +++ /dev/null @@ -1,91 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 OR MIT - -// Run-time feature detection on aarch64 Fuchsia by using zx_system_get_features. -// -// As of nightly-2023-01-23, is_aarch64_feature_detected doesn't support run-time detection on Fuchsia. -// https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/std_detect/src/detect/mod.rs -// -// Refs: -// - https://fuchsia.dev/fuchsia-src/reference/syscalls/system_get_features -// - https://github.com/llvm/llvm-project/commit/4e731abc55681751b5d736b613f7720e50eb1ad4 - -include!("common.rs"); - -#[allow(non_camel_case_types)] -mod ffi { - // https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/zircon/system/public/zircon/types.h - pub(crate) type zx_status_t = i32; - - // https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/zircon/system/public/zircon/errors.h - pub(crate) const ZX_OK: zx_status_t = 0; - // https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/zircon/system/public/zircon/features.h - pub(crate) const ZX_FEATURE_KIND_CPU: u32 = 0; - pub(crate) const ZX_ARM64_FEATURE_ISA_ATOMICS: u32 = 1 << 8; - - #[link(name = "zircon")] - extern "C" { - // https://fuchsia.dev/fuchsia-src/reference/syscalls/system_get_features - pub(crate) fn zx_system_get_features(kind: u32, features: *mut u32) -> zx_status_t; - } -} - -fn zx_system_get_features(kind: u32) -> u32 { - let mut out = 0_u32; - // SAFETY: the pointer is valid because we got it from a reference. - let res = unsafe { ffi::zx_system_get_features(kind, &mut out) }; - if res != ffi::ZX_OK { - return 0; - } - out -} - -#[cold] -fn _detect(info: &mut CpuInfo) { - let features = zx_system_get_features(ffi::ZX_FEATURE_KIND_CPU); - if features & ffi::ZX_ARM64_FEATURE_ISA_ATOMICS != 0 { - info.set(CpuInfo::HAS_LSE); - } -} - -#[allow( - clippy::alloc_instead_of_core, - clippy::std_instead_of_alloc, - clippy::std_instead_of_core, - clippy::undocumented_unsafe_blocks, - clippy::wildcard_imports -)] -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_fuchsia() { - let features = zx_system_get_features(ffi::ZX_FEATURE_KIND_CPU); - assert_ne!(features, 0); - std::eprintln!("features: {:b}", features); - } - - // Static assertions for FFI bindings. - // This checks that FFI bindings defined in this crate and FFI bindings - // generated for the platform's latest header file using bindgen have - // compatible signatures (or the same values if constants). - // Since this is static assertion, we can detect problems with - // `cargo check --tests --target <target>` run in CI (via TESTS=1 build.sh) - // without actually running tests on these platforms. - // See also tools/codegen/src/ffi.rs. - // TODO(codegen): auto-generate this test - #[allow( - clippy::cast_possible_wrap, - clippy::cast_sign_loss, - clippy::cast_possible_truncation, - clippy::no_effect_underscore_binding - )] - const _: fn() = || { - use test_helper::sys; - // TODO(codegen): zx_system_get_features - let _: ffi::zx_status_t = 0 as sys::zx_status_t; - static_assert!(ffi::ZX_OK == sys::ZX_OK as ffi::zx_status_t); - static_assert!(ffi::ZX_FEATURE_KIND_CPU == sys::ZX_FEATURE_KIND_CPU); - static_assert!(ffi::ZX_ARM64_FEATURE_ISA_ATOMICS == sys::ZX_ARM64_FEATURE_ISA_ATOMICS); - }; -} |