Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 9 pull requests #125955

Closed
wants to merge 24 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
fc1e52a
Add tracking issue and unstable book page for `"vectorcall"` ABI
beetrees Apr 28, 2024
494cbd8
bootstrap: implement new feature `bootstrap-self-test`
onur-ozkan May 19, 2024
1dcf764
Item bounds can reference self projections and still be object safe
compiler-errors Mar 21, 2024
65dffc1
Change pedantically incorrect OnceCell/OnceLock wording
mqudsi May 24, 2024
a126c11
Reorder the TOC so that targets are put under their meta-group
Lokathor May 28, 2024
f646314
make the fact that arm-none-eabi is a group of targets the first thin…
Lokathor May 28, 2024
144adf6
update armv4t docs
Lokathor May 28, 2024
d8704b9
It's spelled "ARM", in all caps.
Lokathor May 28, 2024
bb1f5c3
delete the offending single space.
Lokathor May 28, 2024
94d4040
The modern styling is apparently to use Title Case for the chip/compa…
Lokathor May 31, 2024
5f0043a
Handle no values cfg with --print=check-cfg
Urgau May 31, 2024
f58bf91
Add missing tracking issue number for --print=check-cfg
Urgau May 31, 2024
b320ac7
Add a regression test for a former blanket impl synthesis ICE
fmease Jun 3, 2024
4576027
Remove stray "this"
tbu- Jun 3, 2024
273b990
Align Term methods with GenericArg methods
compiler-errors May 30, 2024
960aeed
Rollup merge of #122804 - compiler-errors:item-bounds-can-reference-s…
Noratrieb Jun 4, 2024
b70e78f
Rollup merge of #124486 - beetrees:vectorcall-tracking-issue, r=ehuss
Noratrieb Jun 4, 2024
7735809
Rollup merge of #125273 - onur-ozkan:bootstrap-self-test, r=albertlar…
Noratrieb Jun 4, 2024
d65a179
Rollup merge of #125504 - mqudsi:once_nominal, r=cuviper
Noratrieb Jun 4, 2024
f0ddb4b
Rollup merge of #125690 - Lokathor:arm-maintainer-reorg, r=ehuss
Noratrieb Jun 4, 2024
5b9bf8d
Rollup merge of #125750 - compiler-errors:expect, r=lcnr
Noratrieb Jun 4, 2024
7506409
Rollup merge of #125818 - Urgau:print-check-cfg-no-values, r=petroche…
Noratrieb Jun 4, 2024
5e26f6a
Rollup merge of #125909 - fmease:rustdoc-add-test-synth-blanket-impls…
Noratrieb Jun 4, 2024
292985b
Rollup merge of #125919 - tbu-:pr_fix_typo, r=lqd
Noratrieb Jun 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
It's spelled "ARM", in all caps.
  • Loading branch information
Lokathor committed May 28, 2024
commit d8704b9ac6e72c68920c08a559ce1eba264bef03
44 changes: 22 additions & 22 deletions src/doc/rustc/src/platform-support/arm-none-eabi.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,63 +3,63 @@
## Common Target Details

This documentation covers details that apply to a range of bare-metal targets
for 32-bit Arm CPUs. The `arm-none-eabi` flavor of the GNU compiler toolchain is
for 32-bit ARM CPUs. The `arm-none-eabi` flavor of the GNU compiler toolchain is
often used to assist compilation to these targets.

Check failure on line 8 in src/doc/rustc/src/platform-support/arm-none-eabi.md

View workflow job for this annotation

GitHub Actions / PR - mingw-check-tidy

trailing whitespace
Details that apply only to only a specific target in this group are covered in
their own document.

### Tier 2 Target List

- Arm A-Profile Architectures
- ARM A-Profile Architectures
- `armv7a-none-eabi`
- Arm R-Profile Architectures
- ARM R-Profile Architectures
- [`armv7r-none-eabi` and `armv7r-none-eabihf`](armv7r-none-eabi.md)
- [`armebv7r-none-eabi` and `armebv7r-none-eabihf`](armv7r-none-eabi.md)
- Arm M-Profile Architectures
- ARM M-Profile Architectures
- [`thumbv6m-none-eabi`](thumbv6m-none-eabi.md)
- [`thumbv7m-none-eabi`](thumbv7m-none-eabi.md)
- [`thumbv7em-none-eabi` and `thumbv7em-none-eabihf`](thumbv7em-none-eabi.md)
- [`thumbv8m.base-none-eabi`](thumbv8m.base-none-eabi.md)
- [`thumbv8m.main-none-eabi` and `thumbv8m.main-none-eabihf`](thumbv8m.main-none-eabi.md)
- *Legacy* Arm Architectures
- *Legacy* ARM Architectures
- None

### Tier 3 Target List

- Arm A-Profile Architectures
- ARM A-Profile Architectures
- `armv7a-none-eabihf`
- Arm R-Profile Architectures
- ARM R-Profile Architectures
- [`armv8r-none-eabihf`](armv8r-none-eabihf.md)
- Arm M-Profile Architectures
- ARM M-Profile Architectures
- None
- *Legacy* Arm Architectures
- *Legacy* ARM Architectures
- [`armv4t-none-eabi` and `thumbv4t-none-eabi`](armv4t-none-eabi.md)
- [`armv5te-none-eabi` and `thumbv5te-none-eabi`](armv5te-none-eabi.md)

## Instruction Sets

There are two 32-bit instruction set architectures (ISAs) defined by Arm:
There are two 32-bit instruction set architectures (ISAs) defined by ARM:

- The [*A32 ISA*][a32-isa], with fixed-width 32-bit instructions. Previously
known as the *Arm* ISA, this originated with the original ARM1 of 1985 and has
known as the *ARM* ISA, this originated with the original ARM1 of 1985 and has
been updated by various revisions to the architecture specifications ever
since.
- The [*T32 ISA*][t32-isa], with a mix of 16-bit and 32-bit width instructions.
Note that this term includes both the original 16-bit width *Thumb* ISA
introduced with the Armv4T architecture in 1994, and the later 16/32-bit sized
*Thumb-2* ISA introduced with the Armv6T2 architecture in 2003.
introduced with the ARMv4T architecture in 1994, and the later 16/32-bit sized
*Thumb-2* ISA introduced with the ARMv6T2 architecture in 2003.

Again, these ISAs have been revised by subsequent revisions to the relevant Arm
Again, these ISAs have been revised by subsequent revisions to the relevant ARM
architecture specifications.

There is also a 64-bit ISA with fixed-width 32-bit instructions called the *A64
ISA*, but targets which implement that instruction set generally start with
`aarch64*` and are discussed elsewhere.

Rust targets starting with `arm*` generate Arm (A32) code by default, whilst
targets named `thumb*` generate Thumb (T32) code by default. Most Arm chips
support both Thumb mode and Arm mode, with the notable exception that M-profile
Rust targets starting with `arm*` generate ARM (A32) code by default, whilst
targets named `thumb*` generate Thumb (T32) code by default. Most ARM chips
support both Thumb mode and ARM mode, with the notable exception that M-profile
processors (`thumbv*m*-none-eabi*` targets) *only* support Thumb-mode.

Rust targets ending with `eabi` use the so-called *soft-float ABI*: functions
Expand Down Expand Up @@ -92,14 +92,14 @@

## Target CPU and Target Feature options

It is possible to tell Rust (or LLVM) that you have a specific model of Arm
It is possible to tell Rust (or LLVM) that you have a specific model of ARM
processor, using the [`-C target-cpu`][target-cpu] option. You can also control
whether Rust (or LLVM) will include instructions that target optional hardware
features, e.g. hardware floating-point, or Advanced SIMD operations, using [`-C
target-feature`][target-feature].

It is important to note that selecting a *target-cpu* will typically enable
*all* the optional features available from Arm on that model of CPU and your
*all* the optional features available from ARM on that model of CPU and your
particular implementation of that CPU may not have those features available. In
that case, you can use `-C target-feature=-option` to turn off the specific CPU
features you do not have available, leaving you with the optimized instruction
Expand All @@ -116,7 +116,7 @@

```toml
rustflags = [
# Usual Arm bare-metal linker setup
# Usual ARM bare-metal linker setup
"-Clink-arg=-Tlink.x",
"-Clink-arg=--nmagic",
# tell Rust we have a Cortex-M55
Expand All @@ -139,7 +139,7 @@

By default, the `lld` linker included with Rust will be used; however, you may
want to use the GNU linker instead. This can be obtained for Windows/Mac/Linux
from the [Arm Developer Website][arm-gnu-toolchain], or possibly from your OS's
from the [ARM Developer Website][arm-gnu-toolchain], or possibly from your OS's
package manager. To use it, add the following to your `.cargo/config.toml`:

```toml
Expand Down Expand Up @@ -185,7 +185,7 @@
specific kind of FPU)
* Integer division is also emulated in software on some targets, depending on
the target, `target-cpu` and `target-feature`s.
* Older Arm architectures (e.g. Armv4, Armv5TE and Armv6-M) are limited to basic
* Older ARM architectures (e.g. ARMv4, ARMv5TE and ARMv6-M) are limited to basic
[`load`][atomic-load] and [`store`][atomic-store] operations, and not more
advanced operations like [`fetch_add`][fetch-add] or
[`compare_exchange`][compare-exchange].
Expand Down
Loading