Add an armv8r-none-eabihf
target to support the Cortex-R52.
This commit is contained in:
parent
268dbbbc4b
commit
d6221957e0
@ -1543,6 +1543,7 @@ fn $module() {
|
||||
("armebv7r-none-eabihf", armebv7r_none_eabihf),
|
||||
("armv7r-none-eabi", armv7r_none_eabi),
|
||||
("armv7r-none-eabihf", armv7r_none_eabihf),
|
||||
("armv8r-none-eabihf", armv8r_none_eabihf),
|
||||
|
||||
("x86_64-pc-solaris", x86_64_pc_solaris),
|
||||
("sparcv9-sun-solaris", sparcv9_sun_solaris),
|
||||
|
35
compiler/rustc_target/src/spec/targets/armv8r_none_eabihf.rs
Normal file
35
compiler/rustc_target/src/spec/targets/armv8r_none_eabihf.rs
Normal file
@ -0,0 +1,35 @@
|
||||
// Targets the Little-endian Cortex-R52 processor (ARMv8-R)
|
||||
|
||||
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
Target {
|
||||
llvm_target: "armv8r-none-eabihf".into(),
|
||||
pointer_width: 32,
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: "arm".into(),
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
relocation_model: RelocModel::Static,
|
||||
panic_strategy: PanicStrategy::Abort,
|
||||
// The Cortex-R52 has two variants with respect to floating-point support:
|
||||
// 1. fp-armv8, SP-only, with 16 DP (32 SP) registers
|
||||
// 2. neon-fp-armv8, SP+DP, with 32 DP registers
|
||||
// Use the lesser of these two options as the default, as it will produce code
|
||||
// compatible with either variant.
|
||||
//
|
||||
// Reference:
|
||||
// Arm Cortex-R52 Processor Technical Reference Manual
|
||||
// - Chapter 15 Advanced SIMD and floating-point support
|
||||
features: "+fp-armv8,-fp64,-d32".into(),
|
||||
max_atomic_width: Some(64),
|
||||
emit_debug_gdb_scripts: false,
|
||||
// GCC defaults to 8 for arm-none here.
|
||||
c_enum_min_bits: Some(8),
|
||||
..Default::default()
|
||||
},
|
||||
}
|
||||
}
|
@ -26,6 +26,7 @@
|
||||
- [armv4t-none-eabi](platform-support/armv4t-none-eabi.md)
|
||||
- [armv5te-none-eabi](platform-support/armv5te-none-eabi.md)
|
||||
- [armv7r-none-eabi](platform-support/armv7r-none-eabi.md)
|
||||
- [armv8r-none-eabihf](platform-support/armv8r-none-eabihf.md)
|
||||
- [armv6k-nintendo-3ds](platform-support/armv6k-nintendo-3ds.md)
|
||||
- [armv7-sony-vita-newlibeabihf](platform-support/armv7-sony-vita-newlibeabihf.md)
|
||||
- [armv7-unknown-linux-uclibceabi](platform-support/armv7-unknown-linux-uclibceabi.md)
|
||||
|
@ -278,6 +278,7 @@ target | std | host | notes
|
||||
[`armv7a-kmc-solid_asp3-eabi`](platform-support/kmc-solid.md) | ✓ | | ARM SOLID with TOPPERS/ASP3
|
||||
[`armv7a-kmc-solid_asp3-eabihf`](platform-support/kmc-solid.md) | ✓ | | ARM SOLID with TOPPERS/ASP3, hardfloat
|
||||
[`armv7a-none-eabihf`](platform-support/arm-none-eabi.md) | * | | Bare ARMv7-A, hardfloat
|
||||
[`armv8r-none-eabihf`](platform-support/armv8r-none-eabihf.md) | * | | Bare ARMv8-R, hardfloat
|
||||
[`armv7k-apple-watchos`](platform-support/apple-watchos.md) | ✓ | | ARMv7-A Apple WatchOS
|
||||
`armv7s-apple-ios` | ✓ | | ARMv7-A Apple-A6 Apple iOS
|
||||
`avr-unknown-gnu-atmega328` | * | | AVR. Requires `-Z build-std=core`
|
||||
|
@ -13,6 +13,7 @@
|
||||
- [{arm,thumb}v4t-none-eabi](armv4t-none-eabi.md)
|
||||
- [{arm,thumb}v5te-none-eabi](armv5te-none-eabi.md)
|
||||
- armv7a-none-eabihf
|
||||
- [armv8r-none-eabihf](armv8r-none-eabihf.md)
|
||||
|
||||
Bare-metal target for 32-bit ARM CPUs.
|
||||
|
||||
|
40
src/doc/rustc/src/platform-support/armv8r-none-eabihf.md
Normal file
40
src/doc/rustc/src/platform-support/armv8r-none-eabihf.md
Normal file
@ -0,0 +1,40 @@
|
||||
# `armv8r-none-eabihf`
|
||||
|
||||
**Tier: 3**
|
||||
|
||||
Bare-metal target for CPUs in the ARMv8-R architecture family, supporting
|
||||
dual ARM/Thumb mode, with ARM mode as the default.
|
||||
|
||||
Processors in this family include the Arm [Cortex-R52][cortex-r52]
|
||||
and [Cortex-R52+][cortex-r52-plus].
|
||||
|
||||
See [`arm-none-eabi`](arm-none-eabi.md) for information applicable to all
|
||||
`arm-none-eabi` targets.
|
||||
|
||||
[cortex-r52]: https://www.arm.com/products/silicon-ip-cpu/cortex-r/cortex-r52
|
||||
[cortex-r52-plus]: https://www.arm.com/products/silicon-ip-cpu/cortex-r/cortex-r52-plus
|
||||
|
||||
## Target maintainers
|
||||
|
||||
- [Chris Copeland](https://github.com/chrisnc), `chris@chrisnc.net`
|
||||
|
||||
## Requirements
|
||||
|
||||
The Cortex-R52 family always includes a floating-point unit, so there is no
|
||||
non-`hf` version of this target. The floating-point features assumed by this
|
||||
target are those of the single-precision-only config of the Cortex-R52, which
|
||||
has 16 double-precision registers, accessible as 32 single-precision registers.
|
||||
The other variant of Cortex-R52 includes double-precision, 32 double-precision
|
||||
registers, and Advanced SIMD (Neon).
|
||||
|
||||
The manual refers to this as the "Full Advanced SIMD config". To compile code
|
||||
for this variant, use: `-C target-feature=+fp64,+d32,+neon`. See the [Advanced
|
||||
SIMD and floating-point support][fpu] section of the Cortex-R52 Processor
|
||||
Technical Reference Manual for more details.
|
||||
|
||||
[fpu]: https://developer.arm.com/documentation/100026/0104/Advanced-SIMD-and-floating-point-support/About-the-Advanced-SIMD-and-floating-point-support
|
||||
|
||||
## Cross-compilation toolchains and C code
|
||||
|
||||
This target supports C code compiled with the `arm-none-eabi` target triple and
|
||||
`-march=armv8-r` or a suitable `-mcpu` flag.
|
@ -83,6 +83,7 @@
|
||||
"armebv7r-none-eabihf",
|
||||
"armv7r-none-eabi",
|
||||
"armv7r-none-eabihf",
|
||||
"armv8r-none-eabihf",
|
||||
"armv7s-apple-ios",
|
||||
"bpfeb-unknown-none",
|
||||
"bpfel-unknown-none",
|
||||
|
@ -174,6 +174,9 @@
|
||||
// revisions: armv7r_none_eabihf
|
||||
// [armv7r_none_eabihf] compile-flags: --target armv7r-none-eabihf
|
||||
// [armv7r_none_eabihf] needs-llvm-components: arm
|
||||
// revisions: armv8r_none_eabihf
|
||||
// [armv8r_none_eabihf] compile-flags: --target armv8r-none-eabihf
|
||||
// [armv8r_none_eabihf] needs-llvm-components: arm
|
||||
// FIXME: disabled since it fails on CI saying the csky component is missing
|
||||
/*
|
||||
revisions: csky_unknown_linux_gnuabiv2
|
||||
|
Loading…
Reference in New Issue
Block a user