1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2da6d8567SArnaldo Carvalho de Melo #ifndef _TOOLS_LINUX_ASM_X86_RMWcc 3da6d8567SArnaldo Carvalho de Melo #define _TOOLS_LINUX_ASM_X86_RMWcc 4da6d8567SArnaldo Carvalho de Melo 5da6d8567SArnaldo Carvalho de Melo #define __GEN_RMWcc(fullop, var, cc, ...) \ 6da6d8567SArnaldo Carvalho de Melo do { \ 7*aaff74d8SLinus Torvalds asm goto (fullop "; j" cc " %l[cc_label]" \ 8da6d8567SArnaldo Carvalho de Melo : : "m" (var), ## __VA_ARGS__ \ 9da6d8567SArnaldo Carvalho de Melo : "memory" : cc_label); \ 10da6d8567SArnaldo Carvalho de Melo return 0; \ 11da6d8567SArnaldo Carvalho de Melo cc_label: \ 12da6d8567SArnaldo Carvalho de Melo return 1; \ 13da6d8567SArnaldo Carvalho de Melo } while (0) 14da6d8567SArnaldo Carvalho de Melo 15da6d8567SArnaldo Carvalho de Melo #define GEN_UNARY_RMWcc(op, var, arg0, cc) \ 16da6d8567SArnaldo Carvalho de Melo __GEN_RMWcc(op " " arg0, var, cc) 17da6d8567SArnaldo Carvalho de Melo 18da6d8567SArnaldo Carvalho de Melo #define GEN_BINARY_RMWcc(op, var, vcon, val, arg0, cc) \ 19da6d8567SArnaldo Carvalho de Melo __GEN_RMWcc(op " %1, " arg0, var, cc, vcon (val)) 20da6d8567SArnaldo Carvalho de Melo 21da6d8567SArnaldo Carvalho de Melo #endif /* _TOOLS_LINUX_ASM_X86_RMWcc */ 22