Skip to content

Commit 459d1cf

Browse files
committed
Add mips-zkm-zkvm-elf triple
1 parent 904d8f6 commit 459d1cf

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

compiler/rustc_target/src/spec/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1679,6 +1679,7 @@ supported_targets! {
16791679

16801680
("mips-unknown-linux-uclibc", mips_unknown_linux_uclibc),
16811681
("mipsel-unknown-linux-uclibc", mipsel_unknown_linux_uclibc),
1682+
("mips-zkm-zkvm-elf", mips_zkm_zkvm_elf),
16821683

16831684
("i686-linux-android", i686_linux_android),
16841685
("x86_64-linux-android", x86_64_linux_android),
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
use crate::abi::Endian;
2+
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
3+
4+
pub(crate) fn target() -> Target {
5+
Target {
6+
data_layout: "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".into(),
7+
llvm_target: "mips".into(),
8+
metadata: crate::spec::TargetMetadata {
9+
description: Some("ZKM's zero-knowledge Virtual Machine (MIPS32r2 ISA)".into()),
10+
tier: Some(3),
11+
host_tools: Some(false),
12+
std: None, // ?
13+
},
14+
pointer_width: 32,
15+
arch: "mips".into(),
16+
17+
options: TargetOptions {
18+
os: "zkvm".into(),
19+
vendor: "zkm".into(),
20+
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
21+
linker: Some("rust-lld".into()),
22+
endian: Endian::Big,
23+
cpu: "mips32r2".into(),
24+
25+
// Some crates (*cough* crossbeam) assume you have 64 bit
26+
// atomics if the target name is not in a hardcoded list.
27+
// Since zkvm is singlethreaded and all operations are
28+
// atomic, I guess we can just say we support 64-bit
29+
// atomics.
30+
max_atomic_width: Some(64),
31+
atomic_cas: true,
32+
33+
features: "+mips32r2,+soft-float,+noabicalls".into(),
34+
executables: true,
35+
panic_strategy: PanicStrategy::Abort,
36+
relocation_model: RelocModel::Static,
37+
emit_debug_gdb_scripts: false,
38+
eh_frame_header: false,
39+
singlethread: true,
40+
..Default::default()
41+
},
42+
}
43+
}

src/tools/build-manifest/src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ static TARGETS: &[&str] = &[
128128
"mipsisa64r6el-unknown-linux-gnuabi64",
129129
"mipsel-unknown-linux-gnu",
130130
"mipsel-unknown-linux-musl",
131+
"mips-zkm-zkvm-elf",
131132
"nvptx64-nvidia-cuda",
132133
"powerpc-unknown-linux-gnu",
133134
"powerpc64-unknown-linux-gnu",

0 commit comments

Comments
 (0)