std/sys/
configure_builtins.rs

1/// Hook into .init_array to enable LSE atomic operations at startup, if
2/// supported.
3#[cfg(all(target_arch = "aarch64", target_os = "linux", not(feature = "compiler-builtins-c")))]
4#[used]
5#[unsafe(link_section = ".init_array.90")]
6static RUST_LSE_INIT: extern "C" fn() = {
7    extern "C" fn init_lse() {
8        use crate::arch;
9
10        // This is provided by compiler-builtins::aarch64_linux.
11        unsafe extern "C" {
12            fn __rust_enable_lse();
13        }
14
15        if arch::is_aarch64_feature_detected!("lse") {
16            unsafe {
17                __rust_enable_lse();
18            }
19        }
20    }
21    init_lse
22};