Skip to content

Commit d7bfe45

Browse files
committed
feat: 使用 sifive-test-device
Signed-off-by: YdrMaster <[email protected]>
1 parent bc16f9a commit d7bfe45

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1818
- Use crate rcore-console version 0.0.0 in rustsbi-qemu and test-kernel for `print!` and `println!`
1919
- Use crate aclint version 0.0.0 in rustsbi-qemu for aclint structs
2020
- Use crate os-xtask-utils version 0.0.0 in xtask builder
21+
- Use crate sifive-test-device version 0.0.0 instead of qemu-exit
2122

2223
### Fixed
2324

Cargo.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rustsbi-qemu/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ spin = "0.9"
2424
r0 = "1"
2525
uart_16550 = "0.2"
2626
rcore-console = "0.0.0"
27-
dtb-walker = "=0.2.0-alpha.3"
28-
qemu-exit = "3.0"
2927
aclint = "0.0.0"
28+
sifive-test-device = "0.0.0"
29+
dtb-walker = "=0.2.0-alpha.3"
3030

3131
hsm-cell = { path = "../hsm-cell" }
3232
fast-trap = { git = "https://github.com/YdrMaster/fast-trap", rev = "5026ee4", features = [

rustsbi-qemu/src/qemu_test.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use qemu_exit::{QEMUExit, RISCV64};
21
use rustsbi::{
32
spec::{
43
binary::SbiRet,
@@ -9,14 +8,15 @@ use rustsbi::{
98
},
109
Reset,
1110
};
11+
use sifive_test_device::SifiveTestDevice;
1212
use spin::Once;
1313

14-
pub(crate) struct QemuTest(RISCV64);
14+
pub(crate) struct QemuTest(usize);
1515

1616
static TEST: Once<QemuTest> = Once::new();
1717

1818
pub(crate) fn init(base: usize) {
19-
TEST.call_once(|| QemuTest(RISCV64::new(base as _)));
19+
TEST.call_once(|| QemuTest(base));
2020
}
2121

2222
pub(crate) fn get() -> &'static QemuTest {
@@ -25,13 +25,17 @@ pub(crate) fn get() -> &'static QemuTest {
2525

2626
impl Reset for QemuTest {
2727
fn system_reset(&self, reset_type: u32, reset_reason: u32) -> SbiRet {
28+
let test = unsafe { &*(TEST.wait().0 as *const SifiveTestDevice) };
2829
match reset_type {
2930
RESET_TYPE_SHUTDOWN => match reset_reason {
30-
RESET_REASON_NO_REASON => self.0.exit_success(),
31-
RESET_REASON_SYSTEM_FAILURE => self.0.exit_failure(),
32-
value => self.0.exit(value),
31+
RESET_REASON_NO_REASON => test.pass(),
32+
RESET_REASON_SYSTEM_FAILURE => test.fail(-1 as _),
33+
value => test.fail(value as _),
3334
},
34-
RESET_TYPE_COLD_REBOOT | RESET_TYPE_WARM_REBOOT => SbiRet::success(0),
35+
RESET_TYPE_COLD_REBOOT | RESET_TYPE_WARM_REBOOT => {
36+
// test.reset();
37+
todo!()
38+
}
3539
_ => SbiRet::invalid_param(),
3640
}
3741
}

0 commit comments

Comments
 (0)