diff options
Diffstat (limited to 'src/_arch/arm')
| -rw-r--r-- | src/_arch/arm/asm.rs | 35 | 
1 files changed, 34 insertions, 1 deletions
| diff --git a/src/_arch/arm/asm.rs b/src/_arch/arm/asm.rs index c400f2f..c1af5b4 100644 --- a/src/_arch/arm/asm.rs +++ b/src/_arch/arm/asm.rs @@ -1,9 +1,42 @@  //! Wrapping ARMv7-A Instructions  /// WFE -/// #[inline(always)] +#[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); +	} +} | 
