diff --git a/src/asm/barrier.rs b/src/asm/barrier.rs
index 690c32f..1d20953 100644
--- a/src/asm/barrier.rs
+++ b/src/asm/barrier.rs
@@ -9,15 +9,15 @@
mod sealed {
pub trait Dmb {
- unsafe fn __dmb(&self);
+ fn __dmb(&self);
}
pub trait Dsb {
- unsafe fn __dsb(&self);
+ fn __dsb(&self);
}
pub trait Isb {
- unsafe fn __isb(&self);
+ fn __isb(&self);
}
}
@@ -25,11 +25,13 @@ macro_rules! dmb_dsb {
($A:ident) => {
impl sealed::Dmb for $A {
#[inline(always)]
- unsafe fn __dmb(&self) {
+ fn __dmb(&self) {
match () {
#[cfg(target_arch = "aarch64")]
() => {
- core::arch::asm!(concat!("DMB ", stringify!($A)), options(nostack))
+ unsafe {
+ core::arch::asm!(concat!("DMB ", stringify!($A)), options(nostack))
+ }
}
#[cfg(not(target_arch = "aarch64"))]
@@ -39,11 +41,13 @@ macro_rules! dmb_dsb {
}
impl sealed::Dsb for $A {
#[inline(always)]
- unsafe fn __dsb(&self) {
+ fn __dsb(&self) {
match () {
#[cfg(target_arch = "aarch64")]
() => {
- core::arch::asm!(concat!("DSB ", stringify!($A)), options(nostack))
+ unsafe {
+ core::arch::asm!(concat!("DSB ", stringify!($A)), options(nostack))
+ }
}
#[cfg(not(target_arch = "aarch64"))]
@@ -64,11 +68,13 @@ dmb_dsb!(SY);
impl sealed::Isb for SY {
#[inline(always)]
- unsafe fn __isb(&self) {
+ fn __isb(&self) {
match () {
#[cfg(target_arch = "aarch64")]
() => {
- core::arch::asm!("ISB SY", options(nostack))
+ unsafe {
+ core::arch::asm!("ISB SY", options(nostack))
+ }
}
#[cfg(not(target_arch = "aarch64"))]
@@ -77,33 +83,24 @@ impl sealed::Isb for SY {
}
}
-/// # Safety
-///
-/// In your own hands, this is hardware land!
#[inline(always)]
-pub unsafe fn dmb(arg: A)
+pub fn dmb(arg: A)
where
A: sealed::Dmb,
{
arg.__dmb()
}
-/// # Safety
-///
-/// In your own hands, this is hardware land!
#[inline(always)]
-pub unsafe fn dsb(arg: A)
+pub fn dsb(arg: A)
where
A: sealed::Dsb,
{
arg.__dsb()
}
-/// # Safety
-///
-/// In your own hands, this is hardware land!
#[inline(always)]
-pub unsafe fn isb(arg: A)
+pub fn isb(arg: A)
where
A: sealed::Isb,
{