1 // This defines the aarch64 target for UEFI systems as described in the UEFI specification. See the
2 // uefi-base module for generic UEFI options.
4 use super::uefi_msvc_base;
5 use crate::spec::{LinkerFlavor, LldFlavor, Target};
7 pub fn target() -> Target {
8 let mut base = uefi_msvc_base::opts();
10 base.max_atomic_width = Some(64);
12 let pre_link_args_msvc = vec!["/machine:arm64".to_string()];
14 base.pre_link_args.get_mut(&LinkerFlavor::Msvc).unwrap().extend(pre_link_args_msvc.clone());
16 .get_mut(&LinkerFlavor::Lld(LldFlavor::Link))
18 .extend(pre_link_args_msvc);
21 llvm_target: "aarch64-unknown-windows".to_string(),
23 data_layout: "e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128".to_string(),
24 arch: "aarch64".to_string(),