Skip to content

Commit 7f1947a

Browse files
authored
Merge pull request #5 from Desiki-high/support/riscv-ppc64
feat: support ppc64le and riscv64
2 parents 098fca6 + 5d75df9 commit 7f1947a

File tree

3 files changed

+76
-1
lines changed

3 files changed

+76
-1
lines changed

.github/workflows/bvt.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ jobs:
1010
build:
1111
name: Build
1212
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
arch: [amd64, arm64, ppc64le, riscv64]
1316
steps:
1417
- uses: actions/checkout@v2
1518
- run: rustup install ${{ env.RUST_VERSION }} && rustup default ${{ env.RUST_VERSION }}
@@ -25,6 +28,9 @@ jobs:
2528
clippy:
2629
name: Clippy Check
2730
runs-on: ubuntu-latest
31+
strategy:
32+
matrix:
33+
arch: [amd64, arm64, ppc64le, riscv64]
2834
steps:
2935
- uses: actions/checkout@v2
3036
- run: rustup install ${{ env.RUST_VERSION }} && rustup default ${{ env.RUST_VERSION }}
@@ -33,12 +39,18 @@ jobs:
3339
test:
3440
name: Run Unit Test
3541
runs-on: ubuntu-latest
42+
strategy:
43+
matrix:
44+
arch: [amd64, arm64, ppc64le, riscv64]
3645
steps:
3746
- uses: actions/checkout@v2
3847
- run: rustup install ${{ env.RUST_VERSION }} && rustup default ${{ env.RUST_VERSION }}
3948
- run: make test
4049
bench:
4150
name: Run Benchmark Test
51+
strategy:
52+
matrix:
53+
arch: [amd64, arm64, ppc64le, riscv64]
4254
runs-on: ubuntu-latest
4355
steps:
4456
- uses: actions/checkout@v2

src/lib.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ const BASE_MAGIC_ID: u64 = 0x0710_1984_8664_0000u64;
4343
#[cfg(target_arch = "aarch64")]
4444
const BASE_MAGIC_ID: u64 = 0x0710_1984_AAAA_0000u64;
4545

46+
#[cfg(target_arch = "powerpc64")]
47+
const BASE_MAGIC_ID: u64 = 0x0710_1984_CC64_0000u64;
48+
49+
#[cfg(target_arch = "riscv64")]
50+
const BASE_MAGIC_ID: u64 = 0x0710_1984_C564_0000u64;
51+
4652
/// Error definitions for the Snapshot API.
4753
#[derive(Debug, thiserror::Error, displaydoc::Display, PartialEq)]
4854
pub enum Error {
@@ -326,6 +332,10 @@ mod tests {
326332
let good_magic_id = 0x0710_1984_8664_0001u64;
327333
#[cfg(target_arch = "aarch64")]
328334
let good_magic_id = 0x0710_1984_AAAA_0001u64;
335+
#[cfg(target_arch = "powerpc64")]
336+
let good_magic_id = 0x0710_1984_CC64_0001u64;
337+
#[cfg(target_arch = "riscv64")]
338+
let good_magic_id = 0x0710_1984_C564_0001u64;
329339

330340
assert_eq!(get_format_version(good_magic_id).unwrap(), 1u16);
331341

@@ -550,6 +560,10 @@ mod tests {
550560
let expected_err = Error::Crc64(0x1960_4E6A_A13F_6615);
551561
#[cfg(target_arch = "x86_64")]
552562
let expected_err = Error::Crc64(0x103F_8F52_8F51_20B1);
563+
#[cfg(target_arch = "powerpc64")]
564+
let expected_err = Error::Crc64(0x33D0_CCE5_DA3C_CCEA);
565+
#[cfg(target_arch = "riscv64")]
566+
let expected_err = Error::Crc64(0xFAC5_E225_5586_9011);
553567

554568
let load_result: Result<(Test1, _), Error> =
555569
Snapshot::load(&mut snapshot_mem.as_slice(), 38, vm);

tests/test.rs

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ fn test_hardcoded_snapshot_deserialization() {
5353
0xAA,
5454
#[cfg(target_arch = "aarch64")]
5555
0xAA,
56+
#[cfg(target_arch = "powerpc64")]
57+
0x64,
58+
#[cfg(target_arch = "powerpc64")]
59+
0xCC,
60+
#[cfg(target_arch = "riscv64")]
61+
0x64,
62+
#[cfg(target_arch = "riscv64")]
63+
0xC5,
5664
#[cfg(target_arch = "x86_64")]
5765
0x64,
5866
#[cfg(target_arch = "x86_64")]
@@ -75,10 +83,19 @@ fn test_hardcoded_snapshot_deserialization() {
7583
0xAA,
7684
#[cfg(target_arch = "aarch64")]
7785
0xAA,
86+
#[cfg(target_arch = "powerpc64")]
87+
0x64,
88+
#[cfg(target_arch = "powerpc64")]
89+
0xCC,
90+
#[cfg(target_arch = "riscv64")]
91+
0x64,
92+
#[cfg(target_arch = "riscv64")]
93+
0xC5,
7894
#[cfg(target_arch = "x86_64")]
7995
0x64,
8096
#[cfg(target_arch = "x86_64")]
81-
0x86, 0x84, 0x19, 0x10, 0x07,
97+
0x86,
98+
0x84, 0x19, 0x10, 0x07,
8299
// Version 2 +
83100
0x02, 0x00,
84101
// `a` field +
@@ -129,6 +146,14 @@ fn test_invalid_format_version() {
129146
0xAA,
130147
#[cfg(target_arch = "aarch64")]
131148
0xAA,
149+
#[cfg(target_arch = "powerpc64")]
150+
0x64,
151+
#[cfg(target_arch = "powerpc64")]
152+
0xCC,
153+
#[cfg(target_arch = "riscv64")]
154+
0x64,
155+
#[cfg(target_arch = "riscv64")]
156+
0xC5,
132157
#[cfg(target_arch = "x86_64")]
133158
0x64,
134159
#[cfg(target_arch = "x86_64")]
@@ -156,6 +181,14 @@ fn test_invalid_format_version() {
156181
0xAA,
157182
#[cfg(target_arch = "aarch64")]
158183
0xAA,
184+
#[cfg(target_arch = "powerpc64")]
185+
0x64,
186+
#[cfg(target_arch = "powerpc64")]
187+
0xCC,
188+
#[cfg(target_arch = "riscv64")]
189+
0x64,
190+
#[cfg(target_arch = "riscv64")]
191+
0xC5,
159192
#[cfg(target_arch = "x86_64")]
160193
0x64,
161194
#[cfg(target_arch = "x86_64")]
@@ -185,6 +218,14 @@ fn test_invalid_data_version() {
185218
0xAA,
186219
#[cfg(target_arch = "aarch64")]
187220
0xAA,
221+
#[cfg(target_arch = "powerpc64")]
222+
0x64,
223+
#[cfg(target_arch = "powerpc64")]
224+
0xCC,
225+
#[cfg(target_arch = "riscv64")]
226+
0x64,
227+
#[cfg(target_arch = "riscv64")]
228+
0xC5,
188229
#[cfg(target_arch = "x86_64")]
189230
0x64,
190231
#[cfg(target_arch = "x86_64")]
@@ -211,6 +252,14 @@ fn test_invalid_data_version() {
211252
0xAA,
212253
#[cfg(target_arch = "aarch64")]
213254
0xAA,
255+
#[cfg(target_arch = "powerpc64")]
256+
0x64,
257+
#[cfg(target_arch = "powerpc64")]
258+
0xCC,
259+
#[cfg(target_arch = "riscv64")]
260+
0x64,
261+
#[cfg(target_arch = "riscv64")]
262+
0xC5,
214263
#[cfg(target_arch = "x86_64")]
215264
0x64,
216265
#[cfg(target_arch = "x86_64")]

0 commit comments

Comments
 (0)