#[inline(never)] pub fn jump_to_bootloader_if_flagged() { critical_section::with(|_| { if unsafe { BOOTLOADER_FLAG.get().read() } != BOOTLOADER_FLAG_VALUE { return; } unsafe { // Reset the flag BOOTLOADER_FLAG.get().write(0); // Jump to bootloader (*cortex_m::peripheral::SCB::PTR) .vtor .write(BOOTLOADER_ADDRESS); cortex_m::asm::bootload(BOOTLOADER_ADDRESS as *const u32); } }); }