Skip to content

Commit 5989f64

Browse files
nhtyywakabat
authored andcommitted
feat: 64-bit RISC-V support
1 parent b0e39fc commit 5989f64

File tree

5 files changed

+50
-7
lines changed

5 files changed

+50
-7
lines changed

.github/workflows/ci.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ jobs:
1010
fail-fast: false
1111
matrix:
1212
include:
13+
# https://github.com/actions/runner-images/issues/13046
1314
- os: macos-14
1415
triple: aarch64-apple-darwin
15-
- os: macos-13
16+
- os: macos-15-intel
1617
triple: x86_64-apple-darwin
1718
- os: buildjet-32vcpu-ubuntu-2004
1819
triple: x86_64-unknown-linux-gnu
@@ -25,9 +26,9 @@ jobs:
2526
- uses: lukka/[email protected]
2627

2728
- name: Install Go
28-
uses: actions/setup-go@v4
29+
uses: actions/setup-go@v6
2930
with:
30-
go-version: 1.21.4
31+
go-version: 1.24.11
3132
check-latest: true
3233

3334
- name: Show rust version
@@ -47,7 +48,7 @@ jobs:
4748
uses: actions/checkout@v3
4849
with:
4950
repository: succinctlabs/sp1
50-
ref: dev
51+
ref: xuejie/build-rv64-library-target
5152
path: sp1
5253

5354
- name: Build
@@ -73,9 +74,9 @@ jobs:
7374
- uses: lukka/[email protected]
7475

7576
- name: Install Go
76-
uses: actions/setup-go@v4
77+
uses: actions/setup-go@v6
7778
with:
78-
go-version: 1.21.4
79+
go-version: 1.24.11
7980
check-latest: true
8081

8182
- name: Show rust version
@@ -95,7 +96,7 @@ jobs:
9596
uses: actions/checkout@v3
9697
with:
9798
repository: succinctlabs/sp1
98-
ref: dev
99+
ref: xuejie/build-rv64-library-target
99100
path: sp1
100101

101102
- name: Build

compiler/rustc_target/src/spec/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1676,6 +1676,7 @@ supported_targets! {
16761676
("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
16771677
("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
16781678
("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
1679+
("riscv64im-succinct-zkvm-elf", riscv64im_succinct_zkvm_elf),
16791680
("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
16801681
("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
16811682
("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
@@ -36,6 +36,7 @@ const STAGE0_MISSING_TARGETS: &[&str] = &[
3636
// just a dummy comment so the list doesn't get onelined
3737
"x86_64-unknown-motor",
3838
"riscv32im-succinct-zkvm-elf",
39+
"riscv64im-succinct-zkvm-elf",
3940
];
4041

4142
/// Minimum version threshold for libstdc++ required when using prebuilt LLVM

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

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

0 commit comments

Comments
 (0)