1 // To apply, at the top of xnu.git:
2 // $ spatch --max-width=120 --use-gitgrep --in-place --include-headers --sp-file tools/cocci/mcache_atomic_rewrite.cocci -dir .
4 // coccinelle insists on adding a space for (void) casts which can be fixed with:
5 // $ git grep -l '(void) os_atomic' | xargs -n1 sed -i '' -e 's/(void) os_atomic/(void)os_atomic/'
7 @@ expression E, F, A; @@
10 - atomic_add_16_ov(E, 1)
11 + os_atomic_inc_orig(E, relaxed)
14 + os_atomic_inc(E, relaxed)
16 - atomic_add_32_ov(E, 1)
17 + os_atomic_inc_orig(E, relaxed)
20 + os_atomic_inc(E, relaxed)
22 - atomic_add_64_ov(E, 1)
23 + os_atomic_inc_orig(E, relaxed)
26 + os_atomic_inc(E, relaxed)
28 - atomic_add_16_ov(E, -1)
29 + os_atomic_dec_orig(E, relaxed)
31 - atomic_add_16(E, -1)
32 + os_atomic_dec(E, relaxed)
34 - atomic_add_32_ov(E, -1)
35 + os_atomic_dec_orig(E, relaxed)
37 - atomic_add_32(E, -1)
38 + os_atomic_dec(E, relaxed)
40 - atomic_add_64_ov(E, -1)
41 + os_atomic_dec_orig(E, relaxed)
43 - atomic_add_64(E, -1)
44 + os_atomic_dec(E, relaxed)
46 - atomic_add_16_ov(E, F)
47 + os_atomic_add_orig(E, F, relaxed)
50 + os_atomic_add(E, F, relaxed)
52 - atomic_add_32_ov(E, F)
53 + os_atomic_add_orig(E, F, relaxed)
56 + os_atomic_add(E, F, relaxed)
58 - atomic_add_64_ov(E, F)
59 + os_atomic_add_orig(E, F, relaxed)
62 + os_atomic_add(E, F, relaxed)
64 - atomic_test_set_32(A, E, F)
65 + os_atomic_cmpxchg(A, E, F, acq_rel)
67 - atomic_test_set_64(A, E, F)
68 + os_atomic_cmpxchg(A, E, F, acq_rel)
70 - atomic_test_set_ptr(A, E, F)
71 + os_atomic_cmpxchg(A, E, F, acq_rel)
74 + os_atomic_store(E, F, release)
77 + os_atomic_store(E, F, release)
79 - atomic_set_ptr(E, F)
80 + os_atomic_store(E, F, release)
83 + E = os_atomic_load(A, relaxed)
86 + os_atomic_thread_fence(seq_cst)
88 - atomic_or_8_ov(E, F)
89 + os_atomic_or_orig(E, F, relaxed)
91 - atomic_or_16_ov(E, F)
92 + os_atomic_or_orig(E, F, relaxed)
94 - atomic_or_32_ov(E, F)
95 + os_atomic_or_orig(E, F, relaxed)
98 + os_atomic_or(E, F, relaxed)
101 + os_atomic_or(E, F, relaxed)
104 + os_atomic_or(E, F, relaxed)
106 - atomic_and_8_ov(E, F)
107 + os_atomic_and_orig(E, F, relaxed)
109 - atomic_and_16_ov(E, F)
110 + os_atomic_and_orig(E, F, relaxed)
112 - atomic_and_32_ov(E, F)
113 + os_atomic_and_orig(E, F, relaxed)
116 + os_atomic_and(E, F, relaxed)
118 - atomic_and_16(E, F)
119 + os_atomic_and(E, F, relaxed)
121 - atomic_and_32(E, F)
122 + os_atomic_and(E, F, relaxed)
124 - atomic_bitset_8_ov(E, F)
125 + os_atomic_or_orig(E, F, relaxed)
127 - atomic_bitset_16_ov(E, F)
128 + os_atomic_or_orig(E, F, relaxed)
130 - atomic_bitset_32_ov(E, F)
131 + os_atomic_or_orig(E, F, relaxed)
133 - atomic_bitset_8(E, F)
134 + os_atomic_or(E, F, relaxed)
136 - atomic_bitset_16(E, F)
137 + os_atomic_or(E, F, relaxed)
139 - atomic_bitset_32(E, F)
140 + os_atomic_or(E, F, relaxed)
142 - atomic_bitclear_8_ov(E, F)
143 + os_atomic_andnot_orig(E, F, relaxed)
145 - atomic_bitclear_16_ov(E, F)
146 + os_atomic_andnot_orig(E, F, relaxed)
148 - atomic_bitclear_32_ov(E, F)
149 + os_atomic_andnot_orig(E, F, relaxed)
151 - atomic_bitclear_8(E, F)
152 + os_atomic_andnot(E, F, relaxed)
154 - atomic_bitclear_16(E, F)
155 + os_atomic_andnot(E, F, relaxed)
157 - atomic_bitclear_32(E, F)
158 + os_atomic_andnot(E, F, relaxed)