Skip to main content

cortex_m/register/
lr.rs

1//! Link register
2
3#[cfg(cortex_m)]
4use core::arch::asm;
5use cortex_m_macros::asm_cfg;
6
7/// Reads the CPU register
8#[inline]
9#[asm_cfg(cortex_m)]
10pub fn read() -> u32 {
11    let r;
12    unsafe { asm!("mov {}, lr", out(reg) r, options(nomem, nostack, preserves_flags)) };
13    r
14}
15
16/// Writes `bits` to the CPU register
17///
18/// # Safety
19/// This function can't be used soundly.
20#[inline]
21#[deprecated = "This function can't be used soundly."]
22#[asm_cfg(cortex_m)]
23pub unsafe fn write(bits: u32) {
24    unsafe { asm!("mov lr, {}", in(reg) bits, options(nomem, nostack, preserves_flags)) };
25}