1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
//! Program counter /// Reads the CPU register /// /// **NOTE** This function is available if `cortex-m` is built with the `"inline-asm"` feature. #[inline] pub fn read() -> u32 { match () { #[cfg(cortex_m)] () => { let r; unsafe { asm!("mov $0,R15" : "=r"(r) ::: "volatile") } r } #[cfg(not(cortex_m))] () => unimplemented!(), } } /// Writes `bits` to the CPU register /// /// **NOTE** This function is available if `cortex-m` is built with the `"inline-asm"` feature. #[inline] pub unsafe fn write(_bits: u32) { match () { #[cfg(cortex_m)] () => asm!("mov R15,$0" :: "r"(_bits) :: "volatile"), #[cfg(not(cortex_m))] () => unimplemented!(), } }