]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: atomic: don't use ; to separate instruction on aarch64.
authorOlivier Houchard <cognet@ci0.org>
Wed, 23 Dec 2020 00:23:41 +0000 (01:23 +0100)
committerOlivier Houchard <cognet@ci0.org>
Wed, 23 Dec 2020 00:23:41 +0000 (01:23 +0100)
The assembler on MacOS aarch64 interprets ; as the beginning of comments,
so it is not suitable for separating instructions in inline asm. Use \n
instead.

This should be backported to 2.3, 2.2, 2.1, 2.0 and 1.9.

include/haproxy/atomic.h

index 3f26b6a458c8006909b39b3c48ef47bc70327855..e21d7a3c82a1fd180c45937da9b477d5526bc830 100644 (file)
@@ -504,17 +504,17 @@ static __inline int __ha_cas_dw(void *target, void *compare, void *set)
        uint64_t tmp1, tmp2;
 
        __asm__ __volatile__("1:"
-                             "ldxp %0, %1, [%4];"
-                             "mov %2, %0;"
-                             "mov %3, %1;"
-                             "eor %0, %0, %5;"
-                             "eor %1, %1, %6;"
-                             "orr %1, %0, %1;"
-                             "mov %w0, #0;"
-                             "cbnz %1, 2f;"
-                             "stxp %w0, %7, %8, [%4];"
-                             "cbnz %w0, 1b;"
-                             "mov %w0, #1;"
+                             "ldxp %0, %1, [%4]\n"
+                             "mov %2, %0\n"
+                             "mov %3, %1\n"
+                             "eor %0, %0, %5\n"
+                             "eor %1, %1, %6\n"
+                             "orr %1, %0, %1\n"
+                             "mov %w0, #0\n"
+                             "cbnz %1, 2f\n"
+                             "stxp %w0, %7, %8, [%4]\n"
+                             "cbnz %w0, 1b\n"
+                             "mov %w0, #1\n"
                              "2:"
                              : "=&r" (tmp1), "=&r" (tmp2), "=&r" (value[0]), "=&r" (value[1])
                              : "r" (target), "r" (((void **)(compare))[0]), "r" (((void **)(compare))[1]), "r" (((void **)(set))[0]), "r" (((void **)(set))[1])