|
2 | 2 | #ifndef _ASM_X86_RMWcc
|
3 | 3 | #define _ASM_X86_RMWcc
|
4 | 4 |
|
5 |
| -#define __CLOBBERS_MEM "memory" |
6 |
| -#define __CLOBBERS_MEM_CC_CX "memory", "cc", "cx" |
| 5 | +#define __CLOBBERS_MEM(clb...) "memory", ## clb |
7 | 6 |
|
8 | 7 | #if !defined(__GCC_ASM_FLAG_OUTPUTS__) && defined(CC_HAVE_ASM_GOTO)
|
9 | 8 |
|
@@ -40,18 +39,19 @@ do { \
|
40 | 39 | #endif /* defined(__GCC_ASM_FLAG_OUTPUTS__) || !defined(CC_HAVE_ASM_GOTO) */
|
41 | 40 |
|
42 | 41 | #define GEN_UNARY_RMWcc(op, var, arg0, cc) \
|
43 |
| - __GEN_RMWcc(op " " arg0, var, cc, __CLOBBERS_MEM) |
| 42 | + __GEN_RMWcc(op " " arg0, var, cc, __CLOBBERS_MEM()) |
44 | 43 |
|
45 |
| -#define GEN_UNARY_SUFFIXED_RMWcc(op, suffix, var, arg0, cc) \ |
| 44 | +#define GEN_UNARY_SUFFIXED_RMWcc(op, suffix, var, arg0, cc, clobbers...)\ |
46 | 45 | __GEN_RMWcc(op " " arg0 "\n\t" suffix, var, cc, \
|
47 |
| - __CLOBBERS_MEM_CC_CX) |
| 46 | + __CLOBBERS_MEM(clobbers)) |
48 | 47 |
|
49 | 48 | #define GEN_BINARY_RMWcc(op, var, vcon, val, arg0, cc) \
|
50 | 49 | __GEN_RMWcc(op __BINARY_RMWcc_ARG arg0, var, cc, \
|
51 |
| - __CLOBBERS_MEM, vcon (val)) |
| 50 | + __CLOBBERS_MEM(), vcon (val)) |
52 | 51 |
|
53 |
| -#define GEN_BINARY_SUFFIXED_RMWcc(op, suffix, var, vcon, val, arg0, cc) \ |
| 52 | +#define GEN_BINARY_SUFFIXED_RMWcc(op, suffix, var, vcon, val, arg0, cc, \ |
| 53 | + clobbers...) \ |
54 | 54 | __GEN_RMWcc(op __BINARY_RMWcc_ARG arg0 "\n\t" suffix, var, cc, \
|
55 |
| - __CLOBBERS_MEM_CC_CX, vcon (val)) |
| 55 | + __CLOBBERS_MEM(clobbers), vcon (val)) |
56 | 56 |
|
57 | 57 | #endif /* _ASM_X86_RMWcc */
|
0 commit comments