From cb4aec676b5bfa2671fe5fea69c274414e129c2f Mon Sep 17 00:00:00 2001
From: Daniel Krebs <github@daniel-krebs.net>
Date: Wed, 19 Aug 2015 20:52:29 +0200
Subject: [PATCH] cortexm_common: don't compare with r13/sp in assembly, fix
 #3664

---
 cpu/cortexm_common/vectors_cortexm.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/cpu/cortexm_common/vectors_cortexm.c b/cpu/cortexm_common/vectors_cortexm.c
index 6b90b2d56d..ef19ccd8e5 100644
--- a/cpu/cortexm_common/vectors_cortexm.c
+++ b/cpu/cortexm_common/vectors_cortexm.c
@@ -134,7 +134,8 @@ void hard_fault_default(void)
         "mrs r0, psp                        \n" /*   r0 = psp                 */
         " out:                              \n" /* }                          */
         "mov r1, #0                         \n" /* corrupted = false          */
-        "cmp r0, sp                         \n" /* If msp is active stack-    */
+        "mov r2, sp                         \n" /* Cmp with SP is deprecated  */
+        "cmp r0, r2                         \n" /* If msp is active stack-    */
         "bne hardfault                      \n" /* pointer, check if valid so */
         "cmp r0, %[eram]                    \n" /* so calling c-func works .  */
         "bge fix_msp                        \n" /* if(r0 == msp) {            */
@@ -150,7 +151,7 @@ void hard_fault_default(void)
           : [sram]   "r" (&_sram),
             [eram]   "r" (&_eram),
             [estack] "r" (&_estack)
-          : "r0","r1"
+          : "r0","r1","r2"
     );
 }
 
-- 
GitLab