Skip to content

Commit 9f6e687

Browse files
committed
riscv32imac-unknown-xous-elf: add target
Xous is a microkernel operating system designed to run on small systems. The kernel contains a wide range of userspace processes that provide common services such as console output, networking, and time access. The kernel and its services are completely written in Rust using a custom build of libstd. This adds support for this target to upstream Rust so that we can drop support for our out-of-tree `target.json` file. Add a Tier 3 target for Xous running on RISC-V. Signed-off-by: Sean Cross <[email protected]>
1 parent 989b806 commit 9f6e687

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

compiler/rustc_target/src/spec/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -983,6 +983,7 @@ supported_targets! {
983983
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
984984
("riscv32imc-esp-espidf", riscv32imc_esp_espidf),
985985
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
986+
("riscv32imac-unknown-xous-elf", riscv32imac_unknown_xous_elf),
986987
("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
987988
("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
988989
("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use crate::spec::{LinkerFlavor, LldFlavor, PanicStrategy, RelocModel};
2+
use crate::spec::{Target, TargetOptions};
3+
4+
pub fn target() -> Target {
5+
Target {
6+
data_layout: "e-m:e-p:32:32-i64:64-n32-S128".into(),
7+
llvm_target: "riscv32".into(),
8+
pointer_width: 32,
9+
arch: "riscv32".into(),
10+
11+
options: TargetOptions {
12+
os: "xous".into(),
13+
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
14+
linker: Some("rust-lld".into()),
15+
cpu: "generic-rv32".into(),
16+
max_atomic_width: Some(32),
17+
features: "+m,+a,+c".into(),
18+
executables: true,
19+
panic_strategy: PanicStrategy::Abort,
20+
relocation_model: RelocModel::Static,
21+
..Default::default()
22+
},
23+
}
24+
}

0 commit comments

Comments
 (0)