Add needed volatile qualifications.
Add volatile qualifications to two blocks of inline asm to stop GCC from
eliminating them as dead code.
diff --git a/crypto/bn/asm/x86_64-gcc.c b/crypto/bn/asm/x86_64-gcc.c
index 836f001..be119aa 100644
--- a/crypto/bn/asm/x86_64-gcc.c
+++ b/crypto/bn/asm/x86_64-gcc.c
@@ -191,7 +191,8 @@
if (n <= 0)
return 0;
- asm(" subq %0,%0 \n" /* clear carry */
+ asm volatile (
+ " subq %0,%0 \n" /* clear carry */
" jmp 1f \n"
".p2align 4 \n"
"1: movq (%4,%2,8),%0 \n"
@@ -202,7 +203,7 @@
" sbbq %0,%0 \n"
: "=&r"(ret), "+c"(n), "+r"(i)
: "r"(rp), "r"(ap), "r"(bp)
- : "cc");
+ : "cc", "memory");
return ret & 1;
}
@@ -216,7 +217,8 @@
if (n <= 0)
return 0;
- asm(" subq %0,%0 \n" /* clear borrow */
+ asm volatile (
+ " subq %0,%0 \n" /* clear borrow */
" jmp 1f \n"
".p2align 4 \n"
"1: movq (%4,%2,8),%0 \n"
@@ -227,7 +229,7 @@
" sbbq %0,%0 \n"
: "=&r"(ret), "+c"(n), "+r"(i)
: "r"(rp), "r"(ap), "r"(bp)
- : "cc");
+ : "cc", "memory");
return ret & 1;
}