Mark Rutland | ace9bad | 2018-09-04 11:48:25 +0100 | [diff] [blame] | 1 | # name meta args... |
| 2 | # |
| 3 | # Where meta contains a string of variants to generate. |
| 4 | # Upper-case implies _{acquire,release,relaxed} variants. |
| 5 | # Valid meta values are: |
| 6 | # * B/b - bool: returns bool |
| 7 | # * v - void: returns void |
| 8 | # * I/i - int: returns base type |
| 9 | # * R - return: returns base type (has _return variants) |
| 10 | # * F/f - fetch: returns base type (has fetch_ variants) |
| 11 | # * l - load: returns base type (has _acquire order variant) |
| 12 | # * s - store: returns void (has _release order variant) |
| 13 | # |
| 14 | # Where args contains list of type[:name], where type is: |
| 15 | # * cv - const pointer to atomic base type (atomic_t/atomic64_t/atomic_long_t) |
| 16 | # * v - pointer to atomic base type (atomic_t/atomic64_t/atomic_long_t) |
| 17 | # * i - base type (int/s64/long) |
| 18 | # * p - pointer to base type (int/s64/long) |
| 19 | # |
| 20 | read l cv |
| 21 | set s v i |
| 22 | add vRF i v |
| 23 | sub vRF i v |
| 24 | inc vRF v |
| 25 | dec vRF v |
| 26 | and vF i v |
| 27 | andnot vF i v |
| 28 | or vF i v |
| 29 | xor vF i v |
| 30 | xchg I v i |
| 31 | cmpxchg I v i:old i:new |
| 32 | try_cmpxchg B v p:old i:new |
| 33 | sub_and_test b i v |
| 34 | dec_and_test b v |
| 35 | inc_and_test b v |
| 36 | add_negative b i v |
| 37 | add_unless fb v i:a i:u |
| 38 | inc_not_zero b v |
| 39 | inc_unless_negative b v |
| 40 | dec_unless_positive b v |
| 41 | dec_if_positive i v |