From fe35bfefd678a63f91640ec3fffa91d33a4770b1 Mon Sep 17 00:00:00 2001 From: Kingcq <404291187@qq.com> Date: Fri, 16 May 2025 14:17:39 +0800 Subject: [PATCH 1/3] fix: replace #[naked] with #[unsafe(naked)] for stable Rust --- src/lib.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 80e23b9..45d892e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,7 +2,6 @@ //! //! RISC-V ACLINT is defined in . #![no_std] -#![feature(naked_functions)] #![deny(warnings)] use core::{arch::naked_asm, cell::UnsafeCell}; @@ -85,7 +84,7 @@ impl SifiveClint { } impl SifiveClint { - #[naked] + #[unsafe(naked)] pub extern "C" fn read_mtime_naked(&self) -> u64 { unsafe { naked_asm!( @@ -106,7 +105,7 @@ impl SifiveClint { } } - #[naked] + #[unsafe(naked)] pub extern "C" fn write_mtime_naked(&self, val: u64) -> u64 { unsafe { naked_asm!( @@ -127,7 +126,7 @@ impl SifiveClint { } } - #[naked] + #[unsafe(naked)] pub extern "C" fn read_mtimecmp_naked(&self, hart_idx: usize) -> u64 { unsafe { naked_asm!( @@ -145,7 +144,7 @@ impl SifiveClint { } } - #[naked] + #[unsafe(naked)] pub extern "C" fn write_mtimecmp_naked(&self, hart_idx: usize, val: u64) { unsafe { naked_asm!( @@ -163,7 +162,7 @@ impl SifiveClint { } } - #[naked] + #[unsafe(naked)] pub extern "C" fn read_msip_naked(&self, hart_idx: usize) -> bool { unsafe { naked_asm!( @@ -176,7 +175,7 @@ impl SifiveClint { } } - #[naked] + #[unsafe(naked)] pub extern "C" fn set_msip_naked(&self, hart_idx: usize) { unsafe { naked_asm!( @@ -190,7 +189,7 @@ impl SifiveClint { } } - #[naked] + #[unsafe(naked)] pub extern "C" fn clear_msip_naked(&self, hart_idx: usize) { unsafe { naked_asm!( From 116dc4b2f2bbe713372da667d8eb4f4af35dad41 Mon Sep 17 00:00:00 2001 From: Kingcq <404291187@qq.com> Date: Fri, 16 May 2025 18:31:18 +0800 Subject: [PATCH 2/3] chore: update CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d0c245..ac0e91f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,4 +17,10 @@ This release includes basical aclint functionalities. ### Fixed +## [v0.1.1] + +### Fixed + +- replace `#[naked]` with `#[unsafe(naked)]` for stable Rust + [v0.1.0]: https://github.com/rustsbi/aclint/releases/tag/v0.1.0 From ea7dc7dc18037d048af4e268de13fe734e3e12d6 Mon Sep 17 00:00:00 2001 From: guttatus Date: Mon, 26 May 2025 12:07:44 +0800 Subject: [PATCH 3/3] fix: remove unnecessary `unsafe` block Signed-off-by: guttatus --- src/lib.rs | 166 ++++++++++++++++++++++++----------------------------- 1 file changed, 76 insertions(+), 90 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 45d892e..4f6fc01 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -86,120 +86,106 @@ impl SifiveClint { impl SifiveClint { #[unsafe(naked)] pub extern "C" fn read_mtime_naked(&self) -> u64 { - unsafe { - naked_asm!( - " addi sp, sp, -8 - sd a1, (sp) - - li a1, {offset} - add a0, a0, a1 - - ld a1, (sp) - addi sp, sp, 8 - - ld a0, (a0) - ret - ", - offset = const Self::MTIME_OFFSET, - ) - } + naked_asm!( + " addi sp, sp, -8 + sd a1, (sp) + + li a1, {offset} + add a0, a0, a1 + + ld a1, (sp) + addi sp, sp, 8 + + ld a0, (a0) + ret + ", + offset = const Self::MTIME_OFFSET, + ) } #[unsafe(naked)] pub extern "C" fn write_mtime_naked(&self, val: u64) -> u64 { - unsafe { - naked_asm!( - " addi sp, sp, -8 - sd a1, (sp) - - li a1, {offset} - add a0, a0, a1 - - ld a1, (sp) - addi sp, sp, 8 - - sd a1, (a0) - ret - ", - offset = const Self::MTIME_OFFSET, - ) - } + naked_asm!( + " addi sp, sp, -8 + sd a1, (sp) + + li a1, {offset} + add a0, a0, a1 + + ld a1, (sp) + addi sp, sp, 8 + + sd a1, (a0) + ret + ", + offset = const Self::MTIME_OFFSET, + ) } #[unsafe(naked)] pub extern "C" fn read_mtimecmp_naked(&self, hart_idx: usize) -> u64 { - unsafe { - naked_asm!( - " slli a1, a1, 3 - add a0, a0, a1 - - li a1, {offset} - add a0, a0, a1 - - ld a0, (a0) - ret - ", - offset = const Self::MTIMER_OFFSET, - ) - } + naked_asm!( + " slli a1, a1, 3 + add a0, a0, a1 + + li a1, {offset} + add a0, a0, a1 + + ld a0, (a0) + ret + ", + offset = const Self::MTIMER_OFFSET, + ) } #[unsafe(naked)] pub extern "C" fn write_mtimecmp_naked(&self, hart_idx: usize, val: u64) { - unsafe { - naked_asm!( - " slli a1, a1, 3 - add a0, a0, a1 - - li a1, {offset} - add a0, a0, a1 - - sd a2, (a0) - ret - ", - offset = const Self::MTIMER_OFFSET, - ) - } + naked_asm!( + " slli a1, a1, 3 + add a0, a0, a1 + + li a1, {offset} + add a0, a0, a1 + + sd a2, (a0) + ret + ", + offset = const Self::MTIMER_OFFSET, + ) } #[unsafe(naked)] pub extern "C" fn read_msip_naked(&self, hart_idx: usize) -> bool { - unsafe { - naked_asm!( - " slli a1, a1, 2 - add a0, a0, a1 - lw a0, (a0) - ret - ", - ) - } + naked_asm!( + " slli a1, a1, 2 + add a0, a0, a1 + lw a0, (a0) + ret + ", + ) } #[unsafe(naked)] pub extern "C" fn set_msip_naked(&self, hart_idx: usize) { - unsafe { - naked_asm!( - " slli a1, a1, 2 - add a0, a0, a1 - addi a1, zero, 1 - sw a1, (a0) - ret - ", - ) - } + naked_asm!( + " slli a1, a1, 2 + add a0, a0, a1 + addi a1, zero, 1 + sw a1, (a0) + ret + ", + ) } #[unsafe(naked)] pub extern "C" fn clear_msip_naked(&self, hart_idx: usize) { - unsafe { - naked_asm!( - " slli a1, a1, 2 - add a0, a0, a1 - sw zero, (a0) - ret - ", - ) - } + naked_asm!( + " slli a1, a1, 2 + add a0, a0, a1 + sw zero, (a0) + ret + ", + ) } }