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),
|
("armebv7r-none-eabihf", armebv7r_none_eabihf),
|
||||||
("armv7r-none-eabi", armv7r_none_eabi),
|
("armv7r-none-eabi", armv7r_none_eabi),
|
||||||
("armv7r-none-eabihf", armv7r_none_eabihf),
|
("armv7r-none-eabihf", armv7r_none_eabihf),
|
||||||
|
("armv8r-none-eabihf", armv8r_none_eabihf),
|
||||||
|
|
||||||
("x86_64-pc-solaris", x86_64_pc_solaris),
|
("x86_64-pc-solaris", x86_64_pc_solaris),
|
||||||
("sparcv9-sun-solaris", sparcv9_sun_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)
|
- [armv4t-none-eabi](platform-support/armv4t-none-eabi.md)
|
||||||
- [armv5te-none-eabi](platform-support/armv5te-none-eabi.md)
|
- [armv5te-none-eabi](platform-support/armv5te-none-eabi.md)
|
||||||
- [armv7r-none-eabi](platform-support/armv7r-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)
|
- [armv6k-nintendo-3ds](platform-support/armv6k-nintendo-3ds.md)
|
||||||
- [armv7-sony-vita-newlibeabihf](platform-support/armv7-sony-vita-newlibeabihf.md)
|
- [armv7-sony-vita-newlibeabihf](platform-support/armv7-sony-vita-newlibeabihf.md)
|
||||||
- [armv7-unknown-linux-uclibceabi](platform-support/armv7-unknown-linux-uclibceabi.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-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-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
|
[`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
|
[`armv7k-apple-watchos`](platform-support/apple-watchos.md) | ✓ | | ARMv7-A Apple WatchOS
|
||||||
`armv7s-apple-ios` | ✓ | | ARMv7-A Apple-A6 Apple iOS
|
`armv7s-apple-ios` | ✓ | | ARMv7-A Apple-A6 Apple iOS
|
||||||
`avr-unknown-gnu-atmega328` | * | | AVR. Requires `-Z build-std=core`
|
`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}v4t-none-eabi](armv4t-none-eabi.md)
|
||||||
- [{arm,thumb}v5te-none-eabi](armv5te-none-eabi.md)
|
- [{arm,thumb}v5te-none-eabi](armv5te-none-eabi.md)
|
||||||
- armv7a-none-eabihf
|
- armv7a-none-eabihf
|
||||||
|
- [armv8r-none-eabihf](armv8r-none-eabihf.md)
|
||||||
|
|
||||||
Bare-metal target for 32-bit ARM CPUs.
|
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",
|
"armebv7r-none-eabihf",
|
||||||
"armv7r-none-eabi",
|
"armv7r-none-eabi",
|
||||||
"armv7r-none-eabihf",
|
"armv7r-none-eabihf",
|
||||||
|
"armv8r-none-eabihf",
|
||||||
"armv7s-apple-ios",
|
"armv7s-apple-ios",
|
||||||
"bpfeb-unknown-none",
|
"bpfeb-unknown-none",
|
||||||
"bpfel-unknown-none",
|
"bpfel-unknown-none",
|
||||||
|
@ -174,6 +174,9 @@
|
|||||||
// revisions: armv7r_none_eabihf
|
// revisions: armv7r_none_eabihf
|
||||||
// [armv7r_none_eabihf] compile-flags: --target armv7r-none-eabihf
|
// [armv7r_none_eabihf] compile-flags: --target armv7r-none-eabihf
|
||||||
// [armv7r_none_eabihf] needs-llvm-components: arm
|
// [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
|
// FIXME: disabled since it fails on CI saying the csky component is missing
|
||||||
/*
|
/*
|
||||||
revisions: csky_unknown_linux_gnuabiv2
|
revisions: csky_unknown_linux_gnuabiv2
|
||||||
|
Loading…
Reference in New Issue
Block a user