diff --git a/firmware/thread.c b/firmware/thread.c
index 54d966f..cfd4251 100644
--- a/firmware/thread.c
+++ b/firmware/thread.c
@@ -704,7 +704,7 @@ static void __attribute__((naked))
"mov sp, r2 \n" /* switch stacks */
"adr r2, 1f \n" /* r2 = new core restart address */
"str r2, [r1, #40] \n" /* thread->context.start = r2 */
- "ldr pc, =switch_thread \n" /* r0 = thread after call - see load_context */
+ "bx switch_thread \n" /* r0 = thread after call - see load_context */
"1: \n"
"ldr sp, [r0, #32] \n" /* Reload original sp from context structure */
"mov r1, #0 \n" /* Clear start address */