From 57b4dfa9c991b1101b119b62f80051c66915087e Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Sun, 8 Jun 2014 14:01:43 +0100
Subject: [PATCH] stmhal: Fix pyb.bootloader so it works for gcc-4.9.0.

See PR #618.
---
 stmhal/modpyb.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/stmhal/modpyb.c b/stmhal/modpyb.c
index 7ec25038b..44bcba1d7 100644
--- a/stmhal/modpyb.c
+++ b/stmhal/modpyb.c
@@ -72,7 +72,12 @@ STATIC NORETURN mp_obj_t pyb_bootloader(void) {
     HAL_DeInit();
 
     __HAL_REMAPMEMORY_SYSTEMFLASH();
-    __set_MSP(*((uint32_t*) 0x00000000));
+
+    // arm-none-eabi-gcc 4.9.0 does not correctly inline this
+    // MSP function, so we write it out explicitly here.
+    //__set_MSP(*((uint32_t*) 0x00000000));
+    __ASM volatile ("movs r3, #0\nldr r3, [r3, #0]\nMSR msp, r3\n" : : : "r3", "sp");
+
     ((void (*)(void)) *((uint32_t*) 0x00000004))();
 
     while (1);
-- 
GitLab