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) | |||
199 | /* Flush caches and jump to address */ | 199 | /* Flush caches and jump to address */ |
200 | void* execaddr = (void*)opt->exec_addr; | 200 | void* execaddr = (void*)opt->exec_addr; |
201 | commit_discard_idcache(); | 201 | commit_discard_idcache(); |
202 | __asm__ __volatile__ ("jr %0" :: "r"(execaddr)); | 202 | __asm__ __volatile__ ("jr %0\n" |
203 | "nop\n" | ||
204 | :: "r"(execaddr)); | ||
203 | __builtin_unreachable(); | 205 | __builtin_unreachable(); |
204 | } | 206 | } |
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) | |||
47 | { | 47 | { |
48 | memcpy(dst, src, bytes); | 48 | memcpy(dst, src, bytes); |
49 | commit_discard_idcache(); | 49 | commit_discard_idcache(); |
50 | __asm__ __volatile__ ("jr %0" :: "r"(dst)); | 50 | __asm__ __volatile__ ("jr %0\n" |
51 | "nop\n" | ||
52 | :: "r"(dst)); | ||
51 | __builtin_unreachable(); | 53 | __builtin_unreachable(); |
52 | } | 54 | } |
53 | 55 | ||
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, | |||
204 | commit_discard_idcache(); | 204 | commit_discard_idcache(); |
205 | asm volatile( | 205 | asm volatile( |
206 | "jr %0 \n" | 206 | "jr %0 \n" |
207 | "nop\n" | ||
207 | : : "r"(dest) | 208 | : : "r"(dest) |
208 | ); | 209 | ); |
209 | #endif | 210 | #endif |