Index: common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_cas_16.S --- common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S 16 Jun 2020 22:09:44 -0000 @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_16) cmp w0, w1 /* compare? */ b.ne 2f stxrh w3, w2, [x4] /* store new value */ - cbnz w3, 1b /* succeed? nope, try again. */ - dmb st /* data memory barrier */ + cbnz w3, 3f /* succeed? nope, try again. */ 2: ret /* return. */ +3: b 1b END(_atomic_cas_16) ATOMIC_OP_ALIAS(atomic_cas_16,_atomic_cas_16) Index: common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_cas_32.S --- common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S 16 Jun 2020 22:09:44 -0000 @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_32) cmp w0, w1 /* compare? */ b.ne 2f /* return if different */ stxr w3, w2, [x4] /* store new value */ - cbnz w3, 1b /* succeed? nope, try again. */ - dmb st + cbnz w3, 3f /* succeed? nope, try again. */ 2: ret /* return. */ +3: b 1b END(_atomic_cas_32) ATOMIC_OP_ALIAS(atomic_cas_32,_atomic_cas_32) Index: common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S,v retrieving revision 1.3 diff -u -p -r1.3 atomic_cas_64.S --- common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S 19 Feb 2019 12:51:44 -0000 1.3 +++ common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S 16 Jun 2020 22:09:44 -0000 @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_64) cmp x0, x1 /* compare? */ b.ne 2f /* return if different */ stxr w3, x2, [x4] /* store new value */ - cbnz w3, 1b /* succeed? nope, try again. */ - dmb st + cbnz w3, 3f /* succeed? nope, try again. */ 2: ret /* return. */ +3: b 1b END(_atomic_cas_64) ATOMIC_OP_ALIAS(atomic_cas_64,_atomic_cas_64) Index: common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_cas_8.S --- common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S 16 Jun 2020 22:09:44 -0000 @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_8) cmp w0, w1 /* compare? */ b.ne 2f stxrb w3, w2, [x4] /* store new value */ - cbnz w3, 1b /* succeed? nope, try again. */ - dmb st /* data memory barrier */ + cbnz w3, 3f /* succeed? nope, try again. */ 2: ret /* return. */ +3: b 1b END(_atomic_cas_8) ATOMIC_OP_ALIAS(atomic_cas_8,_atomic_cas_8) Index: common/lib/libc/arch/aarch64/atomic/atomic_dec_32.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_dec_32.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_dec_32.S --- common/lib/libc/arch/aarch64/atomic/atomic_dec_32.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_dec_32.S 16 Jun 2020 22:09:44 -0000 @@ -35,9 +35,9 @@ ENTRY_NP(_atomic_dec_32) 1: ldxr w3, [x0] /* load old value (return value) */ sub w3, w3, #1 /* calculate new value */ stxr w2, w3, [x0] /* try to store */ - cbnz w2, 1b /* succeed? no, try again? */ - dmb st + cbnz w2, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_dec_32) ATOMIC_OP_ALIAS(atomic_dec_32,_atomic_dec_32) @@ -49,9 +49,9 @@ ENTRY_NP(_atomic_dec_32_nv) 1: ldxr w0, [x4] /* load old value */ sub w0, w0, #1 /* calculate new value (return value) */ stxr w3, w0, [x4] /* try to store */ - cbnz w3, 1b /* succeed? no, try again? */ - dmb st + cbnz w3, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_dec_32_nv) ATOMIC_OP_ALIAS(atomic_dec_32_nv,_atomic_dec_32_nv) Index: common/lib/libc/arch/aarch64/atomic/atomic_dec_64.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_dec_64.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_dec_64.S --- common/lib/libc/arch/aarch64/atomic/atomic_dec_64.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_dec_64.S 16 Jun 2020 22:09:44 -0000 @@ -35,9 +35,9 @@ ENTRY_NP(_atomic_dec_64) 1: ldxr x2, [x0] /* load old value (return value) */ sub x2, x2, #1 /* calculate new value */ stxr w3, x2, [x0] /* try to store */ - cbnz w3, 1b /* succeed? no, try again? */ - dmb st + cbnz w3, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_dec_64) ATOMIC_OP_ALIAS(atomic_dec_64,_atomic_dec_64) @@ -51,9 +51,9 @@ ENTRY_NP(_atomic_dec_64_nv) 1: ldxr x0, [x4] /* load old value */ sub x0, x0, #1 /* calculate new value (return value) */ stxr w3, x0, [x4] /* try to store */ - cbnz w3, 1b /* succeed? no, try again? */ - dmb st + cbnz w3, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_dec_64_nv) ATOMIC_OP_ALIAS(atomic_dec_64_nv,_atomic_dec_64_nv) Index: common/lib/libc/arch/aarch64/atomic/atomic_inc_32.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_inc_32.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_inc_32.S --- common/lib/libc/arch/aarch64/atomic/atomic_inc_32.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_inc_32.S 16 Jun 2020 22:09:44 -0000 @@ -35,9 +35,9 @@ ENTRY_NP(_atomic_inc_32) 1: ldxr w3, [x0] /* load old value (return value) */ add w3, w3, #1 /* calculate new value */ stxr w2, w3, [x0] /* try to store */ - cbnz w2, 1b /* succeed? no, try again? */ - dmb st + cbnz w2, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_inc_32) ATOMIC_OP_ALIAS(atomic_inc_32,_atomic_inc_32) @@ -49,9 +49,9 @@ ENTRY_NP(_atomic_inc_32_nv) 1: ldxr w0, [x4] /* load old value */ add w0, w0, #1 /* calculate new value (return value) */ stxr w3, w0, [x4] /* try to store */ - cbnz w3, 1b /* succeed? no, try again? */ - dmb st + cbnz w3, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_inc_32_nv) ATOMIC_OP_ALIAS(atomic_inc_32_nv,_atomic_inc_32_nv) Index: common/lib/libc/arch/aarch64/atomic/atomic_inc_64.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_inc_64.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_inc_64.S --- common/lib/libc/arch/aarch64/atomic/atomic_inc_64.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_inc_64.S 16 Jun 2020 22:09:44 -0000 @@ -35,9 +35,9 @@ ENTRY_NP(_atomic_inc_64) 1: ldxr x2, [x0] /* load old value (return value) */ add x2, x2, #1 /* calculate new value */ stxr w3, x2, [x0] /* try to store */ - cbnz w3, 1b /* succeed? no, try again? */ - dmb st + cbnz w3, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_inc_64) ATOMIC_OP_ALIAS(atomic_inc_64,_atomic_inc_64) @@ -51,9 +51,9 @@ ENTRY_NP(_atomic_inc_64_nv) 1: ldxr x0, [x4] /* load old value */ add x0, x0, #1 /* calculate new value (return value) */ stxr w3, x0, [x4] /* try to store */ - cbnz w3, 1b /* succeed? no, try again? */ - dmb st + cbnz w3, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_inc_64_nv) ATOMIC_OP_ALIAS(atomic_inc_64_nv,_atomic_inc_64_nv) Index: common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_nand_16.S --- common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S 16 Jun 2020 22:09:44 -0000 @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_nand_16) mvn w3, w0 /* complement source */ and w3, w3, w1 /* calculate new value */ stxrh w2, w3, [x4] /* try to store */ - cbnz w2, 1b /* succeed? no, try again */ - dmb st + cbnz w2, 2f /* succeed? no, try again */ ret /* return old value */ +2: b 1b END(_atomic_nand_16) ATOMIC_OP_ALIAS(atomic_nand_16,_atomic_nand_16) @@ -53,9 +53,9 @@ ENTRY_NP(_atomic_nand_16_nv) mvn w0, w0 /* complement source */ and w0, w0, w1 /* calculate new value (return value) */ stxrh w2, w0, [x4] /* try to store */ - cbnz w2, 1b /* succeed? no, try again? */ - dmb st + cbnz w2, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_nand_16_nv) ATOMIC_OP_ALIAS(atomic_nand_16_nv,_atomic_nand_16_nv) Index: common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_nand_32.S --- common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S 16 Jun 2020 22:09:44 -0000 @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_nand_32) mvn w3, w0 /* complement source */ and w3, w3, w1 /* calculate new value */ stxr w2, w3, [x4] /* try to store */ - cbnz w2, 1b /* succeed? no, try again */ - dmb st + cbnz w2, 2f /* succeed? no, try again */ ret /* return old value */ +2: b 1b END(_atomic_nand_32) ATOMIC_OP_ALIAS(atomic_nand_32,_atomic_nand_32) @@ -53,9 +53,9 @@ ENTRY_NP(_atomic_nand_32_nv) mvn w0, w0 /* complement source */ and w0, w0, w1 /* calculate new value (return value) */ stxr w2, w0, [x4] /* try to store */ - cbnz w2, 1b /* succeed? no, try again? */ - dmb st + cbnz w2, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_nand_32_nv) ATOMIC_OP_ALIAS(atomic_nand_32_nv,_atomic_nand_32_nv) Index: common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_nand_64.S --- common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S 16 Jun 2020 22:09:44 -0000 @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_nand_64) mvn x2, x0 /* complement source */ and x2, x2, x1 /* calculate new value */ stxr w3, x2, [x4] /* try to store */ - cbnz w3, 1b /* succeed? no, try again */ - dmb st + cbnz w3, 2f /* succeed? no, try again */ ret /* return old value */ +2: b 1b END(_atomic_nand_64) ATOMIC_OP_ALIAS(atomic_nand_64,_atomic_nand_64) @@ -53,9 +53,9 @@ ENTRY_NP(_atomic_nand_64_nv) mvn x0, x0 /* complement source */ and x0, x0, x1 /* calculate new value (return value) */ stxr w3, x0, [x4] /* try to store */ - cbnz w3, 1b /* succeed? no, try again? */ - dmb st + cbnz w3, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_nand_64_nv) ATOMIC_OP_ALIAS(atomic_nand_64_nv,_atomic_nand_64_nv) Index: common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_nand_8.S --- common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S 16 Jun 2020 22:09:44 -0000 @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_nand_8) mvn w3, w0 /* complement source */ and w3, w3, w1 /* calculate new value */ stxrb w2, w3, [x4] /* try to store */ - cbnz w2, 1b /* succeed? no, try again */ - dmb st + cbnz w2, 2f /* succeed? no, try again */ ret /* return old value */ +2: b 1b END(_atomic_nand_8) ATOMIC_OP_ALIAS(atomic_nand_8,_atomic_nand_8) @@ -53,9 +53,9 @@ ENTRY_NP(_atomic_nand_8_nv) mvn w0, w0 /* complement source */ and w0, w0, w1 /* calculate new value (return value) */ stxrb w2, w0, [x4] /* try to store */ - cbnz w2, 1b /* succeed? no, try again? */ - dmb st + cbnz w2, 2f /* succeed? no, try again? */ ret /* return new value */ +2: b 1b END(_atomic_nand_8_nv) ATOMIC_OP_ALIAS(atomic_nand_8_nv,_atomic_nand_8_nv) Index: common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_swap_16.S --- common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S 16 Jun 2020 22:09:44 -0000 @@ -35,9 +35,9 @@ ENTRY_NP(_atomic_swap_16) mov x4, x0 1: ldxrh w0, [x4] stxrh w3, w1, [x4] - cbnz w3, 1b - dmb st + cbnz w3, 2f ret +2: b 1b END(_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_16,_atomic_swap_16) Index: common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_swap_32.S --- common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S 16 Jun 2020 22:09:44 -0000 @@ -35,9 +35,9 @@ ENTRY_NP(_atomic_swap_32) mov x4, x0 1: ldxr w0, [x4] stxr w3, w1, [x4] - cbnz w3, 1b - dmb st + cbnz w3, 2f ret +2: b 1b END(_atomic_swap_32) ATOMIC_OP_ALIAS(atomic_swap_32,_atomic_swap_32) Index: common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_swap_64.S --- common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S 16 Jun 2020 22:09:44 -0000 @@ -35,9 +35,9 @@ ENTRY_NP(_atomic_swap_64) mov x4, x0 1: ldxr x0, [x4] stxr w3, x1, [x4] - cbnz w3, 1b - dmb st + cbnz w3, 2f ret +2: b 1b END(_atomic_swap_64) ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64) Index: common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S,v retrieving revision 1.1 diff -u -p -r1.1 atomic_swap_8.S --- common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S 10 Aug 2014 05:47:35 -0000 1.1 +++ common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S 16 Jun 2020 22:09:44 -0000 @@ -35,9 +35,9 @@ ENTRY_NP(_atomic_swap_8) mov x4, x0 1: ldxrb w0, [x4] stxrb w3, w1, [x4] - cbnz w3, 1b - dmb st + cbnz w3, 2f ret +2: b 1b END(_atomic_swap_8) ATOMIC_OP_ALIAS(atomic_swap_8,_atomic_swap_8)