Skip to content

Commit 0c90d80

Browse files
nhtyywakabat
authored andcommitted
feat: 64-bit RISC-V support
1 parent 0ea3299 commit 0c90d80

File tree

5 files changed

+45
-3
lines changed

5 files changed

+45
-3
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
uses: actions/checkout@v3
4848
with:
4949
repository: succinctlabs/sp1
50-
ref: aurelien/succinct-toolchain-to-v1.19.1
50+
ref: xuejie/build-rv64-library-target
5151
path: sp1
5252

5353
- name: Build
@@ -95,7 +95,7 @@ jobs:
9595
uses: actions/checkout@v3
9696
with:
9797
repository: succinctlabs/sp1
98-
ref: aurelien/succinct-toolchain-to-v1.19.1
98+
ref: xuejie/build-rv64-library-target
9999
path: sp1
100100

101101
- name: Build
@@ -107,4 +107,4 @@ jobs:
107107
uses: actions/upload-artifact@v4
108108
with:
109109
name: rust-toolchain-aarch64-unknown-linux-gnu
110-
path: sp1/crates/cli/rust-toolchain-aarch64-unknown-linux-gnu.tar.gz
110+
path: sp1/crates/cli/rust-toolchain-aarch64-unknown-linux-gnu.tar.gz

compiler/rustc_target/src/spec/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,6 +1684,7 @@ supported_targets! {
16841684
("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
16851685
("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
16861686
("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
1687+
("riscv64im-succinct-zkvm-elf", riscv64im_succinct_zkvm_elf),
16871688
("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
16881689
("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
16891690
("riscv64gc-unknown-linux-musl", riscv64gc_unknown_linux_musl),
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
use crate::spec::{
2+
Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata, TargetOptions,
3+
};
4+
5+
pub(crate) fn target() -> Target {
6+
Target {
7+
data_layout: "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128".into(),
8+
llvm_target: "riscv64".into(),
9+
metadata: TargetMetadata {
10+
description: Some("Succinct's zero-knowledge Virtual Machine (RV64IM ISA)".into()),
11+
tier: Some(3),
12+
host_tools: Some(false),
13+
std: None, // ?
14+
},
15+
pointer_width: 64,
16+
arch: "riscv64".into(),
17+
18+
options: TargetOptions {
19+
os: "zkvm".into(),
20+
vendor: "succinct".into(),
21+
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
22+
linker: Some("rust-lld".into()),
23+
cpu: "generic-rv64".into(),
24+
25+
max_atomic_width: Some(64),
26+
atomic_cas: true,
27+
28+
features: "+m".into(),
29+
llvm_abiname: "lp64".into(),
30+
executables: true,
31+
panic_strategy: PanicStrategy::Abort,
32+
relocation_model: RelocModel::Static,
33+
emit_debug_gdb_scripts: false,
34+
eh_frame_header: false,
35+
singlethread: true,
36+
..Default::default()
37+
},
38+
}
39+
}

src/bootstrap/src/core/sanity.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const STAGE0_MISSING_TARGETS: &[&str] = &[
3737
"riscv64a23-unknown-linux-gnu",
3838
// just a dummy comment so the list doesn't get onelined
3939
"riscv32im-succinct-zkvm-elf",
40+
"riscv64im-succinct-zkvm-elf",
4041
"aarch64_be-unknown-hermit",
4142
"aarch64_be-unknown-none-softfloat",
4243
];

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ static TARGETS: &[&str] = &[
152152
"riscv32imafc-unknown-none-elf",
153153
"riscv32gc-unknown-linux-gnu",
154154
"riscv64imac-unknown-none-elf",
155+
"riscv64im-succinct-zkvm-elf",
155156
"riscv64gc-unknown-hermit",
156157
"riscv64gc-unknown-none-elf",
157158
"riscv64gc-unknown-linux-gnu",

0 commit comments

Comments
 (0)