Add bare metal riscv32 target.
This commit is contained in:
parent
c86f3ac24f
commit
2fca27cd3b
6 changed files with 40 additions and 1 deletions
|
@ -1621,6 +1621,7 @@ supported_targets! {
|
||||||
("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf),
|
("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf),
|
||||||
("riscv32im-risc0-zkvm-elf", riscv32im_risc0_zkvm_elf),
|
("riscv32im-risc0-zkvm-elf", riscv32im_risc0_zkvm_elf),
|
||||||
("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf),
|
("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf),
|
||||||
|
("riscv32ima-unknown-none-elf", riscv32ima_unknown_none_elf),
|
||||||
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
|
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
|
||||||
("riscv32imc-esp-espidf", riscv32imc_esp_espidf),
|
("riscv32imc-esp-espidf", riscv32imc_esp_espidf),
|
||||||
("riscv32imac-esp-espidf", riscv32imac_esp_espidf),
|
("riscv32imac-esp-espidf", riscv32imac_esp_espidf),
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
|
||||||
|
|
||||||
|
pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
data_layout: "e-m:e-p:32:32-i64:64-n32-S128".into(),
|
||||||
|
llvm_target: "riscv32".into(),
|
||||||
|
metadata: crate::spec::TargetMetadata {
|
||||||
|
description: None,
|
||||||
|
tier: None,
|
||||||
|
host_tools: None,
|
||||||
|
std: None,
|
||||||
|
},
|
||||||
|
pointer_width: 32,
|
||||||
|
arch: "riscv32".into(),
|
||||||
|
|
||||||
|
options: TargetOptions {
|
||||||
|
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||||
|
linker: Some("rust-lld".into()),
|
||||||
|
cpu: "generic-rv32".into(),
|
||||||
|
max_atomic_width: Some(32),
|
||||||
|
features: "+m,+a".into(),
|
||||||
|
panic_strategy: PanicStrategy::Abort,
|
||||||
|
relocation_model: RelocModel::Static,
|
||||||
|
emit_debug_gdb_scripts: false,
|
||||||
|
eh_frame_header: false,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
|
@ -339,6 +339,7 @@ target | std | host | notes
|
||||||
`riscv32gc-unknown-linux-gnu` | | | RISC-V Linux (kernel 5.4, glibc 2.33)
|
`riscv32gc-unknown-linux-gnu` | | | RISC-V Linux (kernel 5.4, glibc 2.33)
|
||||||
`riscv32gc-unknown-linux-musl` | | | RISC-V Linux (kernel 5.4, musl 1.2.3 + RISCV32 support patches)
|
`riscv32gc-unknown-linux-musl` | | | RISC-V Linux (kernel 5.4, musl 1.2.3 + RISCV32 support patches)
|
||||||
[`riscv32im-risc0-zkvm-elf`](platform-support/riscv32im-risc0-zkvm-elf.md) | ? | | RISC Zero's zero-knowledge Virtual Machine (RV32IM ISA)
|
[`riscv32im-risc0-zkvm-elf`](platform-support/riscv32im-risc0-zkvm-elf.md) | ? | | RISC Zero's zero-knowledge Virtual Machine (RV32IM ISA)
|
||||||
|
[`riscv32ima-unknown-none-elf`](platform-support/riscv32-unknown-none-elf.md) | * | | Bare RISC-V (RV32IMA ISA)
|
||||||
[`riscv32imac-unknown-xous-elf`](platform-support/riscv32imac-unknown-xous-elf.md) | ? | | RISC-V Xous (RV32IMAC ISA)
|
[`riscv32imac-unknown-xous-elf`](platform-support/riscv32imac-unknown-xous-elf.md) | ? | | RISC-V Xous (RV32IMAC ISA)
|
||||||
[`riscv32imc-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF
|
[`riscv32imc-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF
|
||||||
[`riscv32imac-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF
|
[`riscv32imac-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
# `riscv32{i,im,imc,imac,imafc}-unknown-none-elf`
|
# `riscv32{i,im,ima,imc,imac,imafc}-unknown-none-elf`
|
||||||
|
|
||||||
**Tier: 2**
|
**Tier: 2**
|
||||||
|
|
||||||
Bare-metal target for RISC-V CPUs with the RV32I, RV32IM, RV32IMC, RV32IMAFC and RV32IMAC ISAs.
|
Bare-metal target for RISC-V CPUs with the RV32I, RV32IM, RV32IMC, RV32IMAFC and RV32IMAC ISAs.
|
||||||
|
|
||||||
|
**Tier: 3**
|
||||||
|
|
||||||
|
Bare-metal target for RISC-V CPUs with the RV32IMA ISA.
|
||||||
|
|
||||||
## Target maintainers
|
## Target maintainers
|
||||||
|
|
||||||
* Rust Embedded Working Group, [RISC-V team](https://github.com/rust-embedded/wg#the-risc-v-team)
|
* Rust Embedded Working Group, [RISC-V team](https://github.com/rust-embedded/wg#the-risc-v-team)
|
||||||
|
|
|
@ -126,6 +126,7 @@ static TARGETS: &[&str] = &[
|
||||||
"riscv32i-unknown-none-elf",
|
"riscv32i-unknown-none-elf",
|
||||||
"riscv32im-risc0-zkvm-elf",
|
"riscv32im-risc0-zkvm-elf",
|
||||||
"riscv32im-unknown-none-elf",
|
"riscv32im-unknown-none-elf",
|
||||||
|
"riscv32ima-unknown-none-elf",
|
||||||
"riscv32imc-unknown-none-elf",
|
"riscv32imc-unknown-none-elf",
|
||||||
"riscv32imac-unknown-none-elf",
|
"riscv32imac-unknown-none-elf",
|
||||||
"riscv32imafc-unknown-none-elf",
|
"riscv32imafc-unknown-none-elf",
|
||||||
|
|
|
@ -369,6 +369,9 @@
|
||||||
//@ revisions: riscv32im_unknown_none_elf
|
//@ revisions: riscv32im_unknown_none_elf
|
||||||
//@ [riscv32im_unknown_none_elf] compile-flags: --target riscv32im-unknown-none-elf
|
//@ [riscv32im_unknown_none_elf] compile-flags: --target riscv32im-unknown-none-elf
|
||||||
//@ [riscv32im_unknown_none_elf] needs-llvm-components: riscv
|
//@ [riscv32im_unknown_none_elf] needs-llvm-components: riscv
|
||||||
|
//@ revisions: riscv32ima_unknown_none_elf
|
||||||
|
//@ [riscv32ima_unknown_none_elf] compile-flags: --target riscv32ima-unknown-none-elf
|
||||||
|
//@ [riscv32ima_unknown_none_elf] needs-llvm-components: riscv
|
||||||
//@ revisions: riscv32imac_esp_espidf
|
//@ revisions: riscv32imac_esp_espidf
|
||||||
//@ [riscv32imac_esp_espidf] compile-flags: --target riscv32imac-esp-espidf
|
//@ [riscv32imac_esp_espidf] compile-flags: --target riscv32imac-esp-espidf
|
||||||
//@ [riscv32imac_esp_espidf] needs-llvm-components: riscv
|
//@ [riscv32imac_esp_espidf] needs-llvm-components: riscv
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue