diff options
-rw-r--r-- | bootloader/fiiom3k-spl.c | 4 | ||||
-rw-r--r-- | bootloader/fiiom3k.c | 4 | ||||
-rw-r--r-- | firmware/rolo.c | 1 |
3 files changed, 7 insertions, 2 deletions
diff --git a/bootloader/fiiom3k-spl.c b/bootloader/fiiom3k-spl.c index ec532d5789..67b4b0a59c 100644 --- a/bootloader/fiiom3k-spl.c +++ b/bootloader/fiiom3k-spl.c @@ -199,6 +199,8 @@ void spl_main(void) /* Flush caches and jump to address */ void* execaddr = (void*)opt->exec_addr; commit_discard_idcache(); - __asm__ __volatile__ ("jr %0" :: "r"(execaddr)); + __asm__ __volatile__ ("jr %0\n" + "nop\n" + :: "r"(execaddr)); __builtin_unreachable(); } diff --git a/bootloader/fiiom3k.c b/bootloader/fiiom3k.c index 6108a37efc..93010e86d2 100644 --- a/bootloader/fiiom3k.c +++ b/bootloader/fiiom3k.c @@ -47,7 +47,9 @@ void exec(void* dst, const void* src, int bytes) { memcpy(dst, src, bytes); commit_discard_idcache(); - __asm__ __volatile__ ("jr %0" :: "r"(dst)); + __asm__ __volatile__ ("jr %0\n" + "nop\n" + :: "r"(dst)); __builtin_unreachable(); } diff --git a/firmware/rolo.c b/firmware/rolo.c index f58b56e827..622110576a 100644 --- a/firmware/rolo.c +++ b/firmware/rolo.c @@ -204,6 +204,7 @@ void rolo_restart(const unsigned char* source, unsigned char* dest, commit_discard_idcache(); asm volatile( "jr %0 \n" + "nop\n" : : "r"(dest) ); #endif |