]>
Commit | Line | Data |
---|---|---|
e74abb32 XL |
1 | // Generic AArch64 target for bare-metal code - Floating point disabled |
2 | // | |
3 | // Can be used in conjunction with the `target-feature` and | |
4 | // `target-cpu` compiler flags to opt-in more hardware-specific | |
5 | // features. | |
6 | // | |
7 | // For example, `-C target-cpu=cortex-a53`. | |
8 | ||
f9f354fc | 9 | use super::{LinkerFlavor, LldFlavor, PanicStrategy, RelocModel, Target, TargetOptions}; |
e74abb32 XL |
10 | |
11 | pub fn target() -> Result<Target, String> { | |
12 | let opts = TargetOptions { | |
13 | linker: Some("rust-lld".to_owned()), | |
14 | features: "+strict-align,-neon,-fp-armv8".to_string(), | |
15 | executables: true, | |
f9f354fc | 16 | relocation_model: RelocModel::Static, |
e74abb32 XL |
17 | disable_redzone: true, |
18 | linker_is_gnu: true, | |
19 | max_atomic_width: Some(128), | |
20 | panic_strategy: PanicStrategy::Abort, | |
f035d41b | 21 | unsupported_abis: super::arm_base::unsupported_abis(), |
dfeec247 | 22 | ..Default::default() |
e74abb32 XL |
23 | }; |
24 | Ok(Target { | |
25 | llvm_target: "aarch64-unknown-none".to_string(), | |
26 | target_endian: "little".to_string(), | |
27 | target_pointer_width: "64".to_string(), | |
28 | target_c_int_width: "32".to_string(), | |
29 | target_os: "none".to_string(), | |
30 | target_env: String::new(), | |
31 | target_vendor: String::new(), | |
32 | data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(), | |
33 | arch: "aarch64".to_string(), | |
34 | linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), | |
35 | options: opts, | |
36 | }) | |
37 | } |