#[inline(always)]
pub fn bkpt() {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe { asm!("bkpt" :::: "volatile") },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __bkpt();
}
__bkpt();
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}
#[inline]
pub fn delay(_n: u32) {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe {
asm!("1:
nop
subs $0, $$1
bne.n 1b"
: "+r"(_n / 4 + 1)
:
:
: "volatile");
},
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __delay(n: u32);
}
__delay(_n / 4 + 1);
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}
#[inline]
pub fn nop() {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe { asm!("nop" :::: "volatile") },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __nop();
}
__nop()
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}
#[inline]
pub fn wfe() {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe { asm!("wfe" :::: "volatile") },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __wfe();
}
__wfe()
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}
#[inline]
pub fn wfi() {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe { asm!("wfi" :::: "volatile") },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __wfi();
}
__wfi()
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}
#[inline]
pub fn sev() {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe { asm!("sev" :::: "volatile") },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __sev();
}
__sev()
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}
#[inline]
pub fn isb() {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe { asm!("isb 0xF" ::: "memory" : "volatile") },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __isb();
}
__isb()
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}
#[inline]
pub fn dsb() {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe { asm!("dsb 0xF" ::: "memory" : "volatile") },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __dsb();
}
__dsb()
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}
#[inline]
pub fn dmb() {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
() => unsafe { asm!("dmb 0xF" ::: "memory" : "volatile") },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
extern "C" {
fn __dmb();
}
__dmb()
},
#[cfg(not(cortex_m))]
() => unimplemented!(),
}
}