Skip to content

Commit 22b8aca

Browse files
committed
Initial support for riscv32{e|em|emc}
1 parent b7b9453 commit 22b8aca

File tree

4 files changed

+76
-0
lines changed

4 files changed

+76
-0
lines changed

compiler/rustc_target/src/spec/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,6 +1802,10 @@ supported_targets! {
18021802
("riscv32imac-esp-espidf", riscv32imac_esp_espidf),
18031803
("riscv32imafc-esp-espidf", riscv32imafc_esp_espidf),
18041804

1805+
("riscv32e-unknown-none-elf", riscv32e_unknown_none_elf),
1806+
("riscv32em-unknown-none-elf", riscv32em_unknown_none_elf),
1807+
("riscv32emc-unknown-none-elf", riscv32emc_unknown_none_elf),
1808+
18051809
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
18061810
("riscv32imafc-unknown-none-elf", riscv32imafc_unknown_none_elf),
18071811
("riscv32imac-unknown-xous-elf", riscv32imac_unknown_xous_elf),
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
2+
3+
pub fn target() -> Target {
4+
Target {
5+
data_layout: "e-m:e-p:32:32-i64:64-n32-S128".into(),
6+
llvm_target: "riscv32".into(),
7+
pointer_width: 32,
8+
arch: "riscv32".into(),
9+
10+
options: TargetOptions {
11+
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
12+
linker: Some("rust-lld".into()),
13+
cpu: "generic-rv32".into(),
14+
max_atomic_width: Some(32),
15+
atomic_cas: false,
16+
features: "+e,+forced-atomics".into(),
17+
panic_strategy: PanicStrategy::Abort,
18+
relocation_model: RelocModel::Static,
19+
emit_debug_gdb_scripts: false,
20+
eh_frame_header: false,
21+
..Default::default()
22+
},
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
2+
3+
pub fn target() -> Target {
4+
Target {
5+
data_layout: "e-m:e-p:32:32-i64:64-n32-S128".into(),
6+
llvm_target: "riscv32".into(),
7+
pointer_width: 32,
8+
arch: "riscv32".into(),
9+
10+
options: TargetOptions {
11+
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
12+
linker: Some("rust-lld".into()),
13+
cpu: "generic-rv32".into(),
14+
max_atomic_width: Some(32),
15+
atomic_cas: false,
16+
features: "+e,+m,+forced-atomics".into(),
17+
panic_strategy: PanicStrategy::Abort,
18+
relocation_model: RelocModel::Static,
19+
emit_debug_gdb_scripts: false,
20+
eh_frame_header: false,
21+
..Default::default()
22+
},
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
2+
3+
pub fn target() -> Target {
4+
Target {
5+
data_layout: "e-m:e-p:32:32-i64:64-n32-S128".into(),
6+
llvm_target: "riscv32".into(),
7+
pointer_width: 32,
8+
arch: "riscv32".into(),
9+
10+
options: TargetOptions {
11+
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
12+
linker: Some("rust-lld".into()),
13+
cpu: "generic-rv32".into(),
14+
max_atomic_width: Some(32),
15+
atomic_cas: false,
16+
features: "+e,+m,+c,+forced-atomics".into(),
17+
panic_strategy: PanicStrategy::Abort,
18+
relocation_model: RelocModel::Static,
19+
emit_debug_gdb_scripts: false,
20+
eh_frame_header: false,
21+
..Default::default()
22+
},
23+
}
24+
}

0 commit comments

Comments
 (0)