Lines Matching +full:sync +full:- +full:update +full:- +full:mask
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
46 * Note that not all Book-E processors accept the light-weight sync variant.
48 * 64-bit capable CPUs to accept lwsync properly and pressimize 32-bit CPUs
49 * to use the heavier-weight sync.
53 #define mb() __asm __volatile("sync" : : : "memory")
59 #define mb() __asm __volatile("sync" : : : "memory")
60 #define rmb() __asm __volatile("sync" : : : "memory")
61 #define wmb() __asm __volatile("sync" : : : "memory")
62 #define __ATOMIC_REL() __asm __volatile("sync" : : : "memory")
73 __asm __volatile("sync" : : : "memory"); in powerpc_lwsync()
87 " bne- 1b\n" \
99 " bne- 1b\n" \
110 " bne- 1b\n" \
173 " bne- 1b\n" \ in _ATOMIC_ADD()
185 " bne- 1b\n" \ in _ATOMIC_ADD()
196 " bne- 1b\n" \ in _ATOMIC_ADD()
252 /* TODO -- see below */
257 /* TODO -- see below */
262 /* TODO -- see below */
274 " bne- 1b\n" \
286 " bne- 1b\n" \
297 " bne- 1b\n" \
352 * { *p -= v; }
360 " bne- 1b\n" \
372 " bne- 1b\n" \
383 " bne- 1b\n" \
439 /* TODO -- see below */
455 "bne- 1b\n\t" /* spin if failed */
474 "bne- 1b\n\t" /* spin if failed */ in atomic_readandclear_long()
557 * two values are equal, update the value of *p with newval. Returns
569 "bne- 2f\n\t" /* exit if not equal */
571 "bne- 1b\n\t" /* spin if failed */
572 "li %0, 1\n\t" /* success - retval = 1 */
576 "li %0, 0\n\t" /* failure - retval = 0 */
593 "bne- 2f\n\t" /* exit if not equal */ in atomic_cmpset_short()
595 "bne- 1b\n\t" /* spin if failed */ in atomic_cmpset_short()
596 "li %0, 1\n\t" /* success - retval = 1 */ in atomic_cmpset_short()
600 "li %0, 0\n\t" /* failure - retval = 0 */ in atomic_cmpset_short()
611 uint32_t mask)
620 "bne- 2f\n\t" /* exit if not equal */
624 "bne- 1b\n\t" /* spin if failed */
625 "li %0, 1\n\t" /* success - retval = 1 */
629 "li %0, 0\n\t" /* failure - retval = 0 */
633 "r" (mask)
650 "bne- 2f\n\t" /* exit if not equal */ in atomic_cmpset_int()
652 "bne- 1b\n\t" /* spin if failed */ in atomic_cmpset_int()
653 "li %0, 1\n\t" /* success - retval = 1 */ in atomic_cmpset_int()
657 "li %0, 0\n\t" /* failure - retval = 0 */ in atomic_cmpset_int()
674 "bne- 2f\n\t" /* exit if not equal */ in atomic_cmpset_long()
679 "bne- 2f\n\t" /* exit if not equal */ in atomic_cmpset_long()
682 "bne- 1b\n\t" /* spin if failed */ in atomic_cmpset_long()
683 "li %0, 1\n\t" /* success - retval = 1 */ in atomic_cmpset_long()
691 "li %0, 0\n\t" /* failure - retval = 0 */ in atomic_cmpset_long()
754 * two values are equal, update the value of *p with newval. Returns
767 "bne- 1f\n\t" /* exit if not equal */ in atomic_fcmpset_char()
769 "bne- 1f\n\t" /* exit if failed */ in atomic_fcmpset_char()
770 "li %0, 1\n\t" /* success - retval = 1 */ in atomic_fcmpset_char()
775 "li %0, 0\n\t" /* failure - retval = 0 */ in atomic_fcmpset_char()
792 "bne- 1f\n\t" /* exit if not equal */ in atomic_fcmpset_short()
794 "bne- 1f\n\t" /* exit if failed */ in atomic_fcmpset_short()
795 "li %0, 1\n\t" /* success - retval = 1 */ in atomic_fcmpset_short()
800 "li %0, 0\n\t" /* failure - retval = 0 */ in atomic_fcmpset_short()
818 "bne- 1f\n\t" /* exit if not equal */ in atomic_fcmpset_int()
820 "bne- 1f\n\t" /* exit if failed */ in atomic_fcmpset_int()
821 "li %0, 1\n\t" /* success - retval = 1 */ in atomic_fcmpset_int()
826 "li %0, 0\n\t" /* failure - retval = 0 */ in atomic_fcmpset_int()
843 "bne- 1f\n\t" /* exit if not equal */ in atomic_fcmpset_long()
848 "bne- 1f\n\t" /* exit if not equal */ in atomic_fcmpset_long()
851 "bne- 1f\n\t" /* exit if failed */ in atomic_fcmpset_long()
852 "li %0, 1\n\t" /* success - retval = 1 */ in atomic_fcmpset_long()
862 "li %0, 0\n\t" /* failure - retval = 0 */ in atomic_fcmpset_long()
953 " bne- 1b\n" in atomic_swap_32()
970 " bne- 1b\n" in atomic_swap_64()
1003 " bne- 1b\n" in atomic_testandset_int()
1023 " bne- 1b\n" in atomic_testandclear_int()
1044 " bne- 1b\n" in atomic_testandset_long()
1064 " bne- 1b\n" in atomic_testandclear_long()
1131 __asm __volatile("sync" : : : "memory"); in atomic_thread_fence_seq_cst()
1142 /* These need sys/_atomic_subword.h on non-ISA-2.06-atomic platforms. */