Skip to content

Commit 4e68e5f

Browse files
committed
fix: 移除 r0
Signed-off-by: YdrMaster <[email protected]>
1 parent 3d732bf commit 4e68e5f

File tree

7 files changed

+29
-21
lines changed

7 files changed

+29
-21
lines changed

Cargo.lock

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

bench-kernel/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ publish = false
1010
[dependencies]
1111
sbi-rt = "0.0.2"
1212
riscv = "0.9.0"
13-
r0 = "1"
1413
uart_16550 = "0.2"
1514
rcore-console = "0.0.0"

bench-kernel/src/main.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,14 @@ extern "C" fn rust_main(hartid: usize, _dtb_pa: usize) -> ! {
3333
static mut sbss: u64;
3434
static mut ebss: u64;
3535
}
36-
unsafe { r0::zero_bss(&mut sbss, &mut ebss) };
36+
unsafe {
37+
let mut ptr = &mut sbss as *mut u64;
38+
let end = &mut ebss as *mut u64;
39+
while ptr < end {
40+
ptr.write_volatile(0);
41+
ptr = ptr.offset(1);
42+
}
43+
}
3744
// 初始化打印
3845
unsafe { UART = MaybeUninit::new(MmioSerialPort::new(0x1000_0000)) };
3946
rcore_console::init_console(&Console);

rustsbi-qemu/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ rustsbi = "0.3.0"
2121
sbi-spec = { version = "0.0.4", features = ["legacy"] }
2222
riscv = "0.9.0"
2323
spin = "0.9"
24-
r0 = "1"
2524
uart_16550 = "0.2"
2625
rcore-console = "0.0.0"
2726
aclint = "0.0.0"

rustsbi-qemu/src/main.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ use core::{
3333
use device_tree::BoardInfo;
3434
use fast_trap::{FastContext, FastResult};
3535
use riscv_spec::*;
36-
use rustsbi::RustSBI;
37-
use sbi_spec::binary::SbiRet;
36+
use rustsbi::{spec::binary::SbiRet, RustSBI};
3837
use spin::{Mutex, Once};
3938
use trap_stack::{local_hsm, local_remote_hsm, remote_hsm};
4039
use uart_16550::MmioSerialPort;
@@ -76,7 +75,14 @@ extern "C" fn rust_main(hartid: usize, opaque: usize) {
7675
static mut sbss: u64;
7776
static mut ebss: u64;
7877
}
79-
unsafe { r0::zero_bss(&mut sbss, &mut ebss) };
78+
unsafe {
79+
let mut ptr = &mut sbss as *mut u64;
80+
let end = &mut ebss as *mut u64;
81+
while ptr < end {
82+
ptr.write_volatile(0);
83+
ptr = ptr.offset(1);
84+
}
85+
}
8086
// 解析设备树
8187
let board_info = BOARD_INFO.call_once(|| device_tree::parse(opaque));
8288
// 初始化外设
@@ -227,7 +233,7 @@ extern "C" fn fast_handler(
227233
match cause.cause() {
228234
// SBI call
229235
T::Exception(E::SupervisorEnvCall) => {
230-
use sbi_spec::{base, hsm, legacy};
236+
use rustsbi::spec::{base, hsm, legacy};
231237
let mut ret = unsafe { SBI.assume_init_mut() }.handle_ecall(
232238
a7,
233239
a6,
@@ -384,7 +390,7 @@ impl rustsbi::Hsm for Hsm {
384390
}
385391

386392
fn hart_suspend(&self, suspend_type: u32, resume_addr: usize, opaque: usize) -> SbiRet {
387-
use sbi_spec::hsm as spec;
393+
use rustsbi::spec::hsm as spec;
388394
match suspend_type {
389395
spec::HART_SUSPEND_TYPE_NON_RETENTIVE => {
390396
local_hsm().suspend_non_retentive(Supervisor {

test-kernel/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ sbi-testing = { version = "0.0.1", features = ["log"] }
1212
log = "0.4.17"
1313
riscv = "0.9.0"
1414
spin = "0.9"
15-
r0 = "1"
1615
uart_16550 = "0.2"
1716
rcore-console = "0.0.0"
1817
dtb-walker = "=0.2.0-alpha.3"

test-kernel/src/main.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ unsafe extern "C" fn _start(hartid: usize, device_tree_paddr: usize) -> ! {
2929
"la sp, {stack} + {stack_size}",
3030
"j {main}",
3131
stack_size = const STACK_SIZE,
32-
stack = sym STACK,
33-
main = sym rust_main,
32+
stack = sym STACK,
33+
main = sym rust_main,
3434
options(noreturn),
3535
)
3636
}
@@ -40,7 +40,14 @@ extern "C" fn rust_main(hartid: usize, dtb_pa: usize) -> ! {
4040
static mut sbss: u64;
4141
static mut ebss: u64;
4242
}
43-
unsafe { r0::zero_bss(&mut sbss, &mut ebss) };
43+
unsafe {
44+
let mut ptr = &mut sbss as *mut u64;
45+
let end = &mut ebss as *mut u64;
46+
while ptr < end {
47+
ptr.write_volatile(0);
48+
ptr = ptr.offset(1);
49+
}
50+
}
4451
let BoardInfo {
4552
smp,
4653
frequency,

0 commit comments

Comments
 (0)