//! Wrapping ARMv7-A Instructions /// WFE #[inline(always)] pub fn wfe() { unsafe { core::arch::asm!("wfe", options(nomem, nostack)) } } /// NOP #[inline(always)] pub fn nop() { unsafe { core::arch::asm!("nop", options(nomem, nostack)) } } /// Store u32 to address #[inline] pub fn store32(addr: u32, value: u32) { unsafe { *(addr as *mut u32) = value; } } /// Read u32 value from address #[inline] pub fn load32(addr: u32) -> u32 { unsafe { *(addr as *mut u32) } } /// Wait for n cycles #[inline] pub fn spin_for_n_cycles(n: u32) { unsafe { core::arch::asm!("1: subs r1, #1 bne 1b", in("r1") n); } }