#[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);
        }
    });
}