mpi: Fix ARM assembler in longlong.h.
authorMarcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
Tue, 4 Jul 2017 21:19:51 +0000 (23:19 +0200)
committerMarcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
Tue, 4 Jul 2017 21:19:51 +0000 (23:19 +0200)
* mpi/longlong.h [__arm__] (add_ssaaaa, sub_ddmmss): Add __CLOBBER_CC.
[__arm__][__ARM_ARCH <= 3] (umul_ppmm): Add __AND_CLOBBER_CC.

--
This is a backport of libgcrypt 8aa4f2161 and 3b1cc9e6c.

Signed-off-by: Marcus Brinkmann <mb@g10code.com>
GnuPG-bug-id: 3182

mpi/longlong.h

index 4905268..0a28c67 100644 (file)
@@ -189,7 +189,7 @@ extern UDItype __udiv_qrnnd ();
           : "%r" ((USItype)(ah)),                                      \
             "rI" ((USItype)(bh)),                                      \
             "%r" ((USItype)(al)),                                      \
-            "rI" ((USItype)(bl)))
+            "rI" ((USItype)(bl)) __CLOBBER_CC)
 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
   __asm__ ("subs %1, %4, %5\n"                                          \
           "sbc  %0, %2, %3"                                            \
@@ -198,7 +198,7 @@ extern UDItype __udiv_qrnnd ();
           : "r" ((USItype)(ah)),                                       \
             "rI" ((USItype)(bh)),                                      \
             "r" ((USItype)(al)),                                       \
-            "rI" ((USItype)(bl)))
+            "rI" ((USItype)(bl)) __CLOBBER_CC)
 #if defined __ARM_ARCH_2__ || defined __ARM_ARCH_3__
 #define umul_ppmm(xh, xl, a, b) \
   __asm__ ("%@ Inlined umul_ppmm\n"                                     \
@@ -218,7 +218,7 @@ extern UDItype __udiv_qrnnd ();
             "=r" ((USItype)(xl))                                       \
           : "r" ((USItype)(a)),                                        \
             "r" ((USItype)(b))                                         \
-          : "r0", "r1", "r2")
+          : "r0", "r1", "r2" __AND_CLOBBER_CC)
 #else
 #define umul_ppmm(xh, xl, a, b)                                         \
   __asm__ ("%@ Inlined umul_ppmm\n"                                     \