ARM: Handle ARM_ALWAYS_BX in {add,sub}_n.S code.
authorRoland McGrath <roland@hack.frob.com>
Wed, 13 Mar 2013 16:51:37 +0000 (09:51 -0700)
committerRoland McGrath <roland@hack.frob.com>
Wed, 13 Mar 2013 16:51:37 +0000 (09:51 -0700)
ports/ChangeLog.arm
ports/sysdeps/arm/add_n.S

index 72060bac34c9759b151977dd1ca9160459f082f9..71520a634457afb652c1c158ef89fc11658f80e1 100644 (file)
@@ -1,5 +1,8 @@
 2013-03-13  Roland McGrath  <roland@hack.frob.com>
 
+       * sysdeps/arm/add_n.S: Include <arm-features.h>.
+       [ARM_ALWAYS_BX]: Don't pop into pc.
+
        * sysdeps/arm/arm-features.h: Add comment about ARM_ALWAYS_BX.
        * sysdeps/arm/memcpy.S: Include <arm-features.h>.
        [ARM_ALWAYS_BX]: Avoid pc as destination.
index 119a9942d1ad52f98c3c39d3d681d86c09f189af..52927d997d2954b9531f74a16d365e5e18148ffd 100644 (file)
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <arm-features.h>
 
        .syntax unified
        .text
@@ -80,5 +81,10 @@ ENTRY (FUNC)
 
 9:
        RETC                            /* copy carry out */
+#ifndef ARM_ALWAYS_BX
        pop     { r4, r5, r6, r7, r8, r10, pc }
+#else
+       pop     { r4, r5, r6, r7, r8, r10, lr }
+       bx      lr
+#endif
 END (FUNC)