1*cb14a3feSDimitry Andric#include <zircon/features.h>
2*cb14a3feSDimitry Andric#include <zircon/syscalls.h>
3*cb14a3feSDimitry Andric
4*cb14a3feSDimitry Andricstatic void CONSTRUCTOR_ATTRIBUTE init_have_lse_atomics(void) {
5*cb14a3feSDimitry Andric  // This ensures the vDSO is a direct link-time dependency of anything that
6*cb14a3feSDimitry Andric  // needs this initializer code.
7*cb14a3feSDimitry Andric#pragma comment(lib, "zircon")
8*cb14a3feSDimitry Andric  uint32_t features;
9*cb14a3feSDimitry Andric  zx_status_t status = _zx_system_get_features(ZX_FEATURE_KIND_CPU, &features);
10*cb14a3feSDimitry Andric  __aarch64_have_lse_atomics =
11*cb14a3feSDimitry Andric      status == ZX_OK && (features & ZX_ARM64_FEATURE_ISA_ATOMICS) != 0;
12*cb14a3feSDimitry Andric}
13