Sun Jan 4 18:21:38 2009 UTC ()
Opt for libc versions in case of _KERNEL && !_RUMPKERNEL.
(kernel version uses sti/cli and is not PIC)


(pooka)
diff -r1.14 -r1.15 src/common/lib/libc/arch/i386/atomic/atomic.S

cvs diff -r1.14 -r1.15 src/common/lib/libc/arch/i386/atomic/atomic.S (switch to unified diff)

--- src/common/lib/libc/arch/i386/atomic/atomic.S 2008/12/19 11:21:24 1.14
+++ src/common/lib/libc/arch/i386/atomic/atomic.S 2009/01/04 18:21:38 1.15
@@ -1,375 +1,379 @@ @@ -1,375 +1,379 @@
1/* $NetBSD: atomic.S,v 1.14 2008/12/19 11:21:24 ad Exp $ */ 1/* $NetBSD: atomic.S,v 1.15 2009/01/04 18:21:38 pooka Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2007 The NetBSD Foundation, Inc. 4 * Copyright (c) 2007 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Jason R. Thorpe, and by Andrew Doran. 8 * by Jason R. Thorpe, and by Andrew Doran.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright 15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the 16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution. 17 * documentation and/or other materials provided with the distribution.
18 *  18 *
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE. 29 * POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32#include <machine/asm.h> 32#include <machine/asm.h>
33 33
34#ifdef _KERNEL 34#if defined(_KERNEL) && !defined(_RUMPKERNEL)
 35#define _HARDKERNEL
 36#endif
 37
 38#ifdef _HARDKERNEL
35#define LOCK(n) .Lpatch/**/n: lock 39#define LOCK(n) .Lpatch/**/n: lock
36#define ALIAS(f, t) STRONG_ALIAS(f,t) 40#define ALIAS(f, t) STRONG_ALIAS(f,t)
37#define ENDLABEL(a) _ALIGN_TEXT; LABEL(a) 41#define ENDLABEL(a) _ALIGN_TEXT; LABEL(a)
38#else 42#else
39#define LOCK(n) lock 43#define LOCK(n) lock
40#define ALIAS(f, t) WEAK_ALIAS(f,t) 44#define ALIAS(f, t) WEAK_ALIAS(f,t)
41#define ENDLABEL(a) /* nothing */ 45#define ENDLABEL(a) /* nothing */
42#endif 46#endif
43 47
44 .text 48 .text
45 49
46ENTRY(_atomic_add_32) 50ENTRY(_atomic_add_32)
47 movl 4(%esp), %edx 51 movl 4(%esp), %edx
48 movl 8(%esp), %eax 52 movl 8(%esp), %eax
49 LOCK(1) 53 LOCK(1)
50 addl %eax, (%edx) 54 addl %eax, (%edx)
51 ret 55 ret
52 56
53ENTRY(_atomic_add_32_nv) 57ENTRY(_atomic_add_32_nv)
54 movl 4(%esp), %edx 58 movl 4(%esp), %edx
55 movl 8(%esp), %eax 59 movl 8(%esp), %eax
56 movl %eax, %ecx 60 movl %eax, %ecx
57 LOCK(2) 61 LOCK(2)
58 xaddl %eax, (%edx) 62 xaddl %eax, (%edx)
59 addl %ecx, %eax 63 addl %ecx, %eax
60 ret 64 ret
61 65
62ENTRY(_atomic_and_32) 66ENTRY(_atomic_and_32)
63 movl 4(%esp), %edx 67 movl 4(%esp), %edx
64 movl 8(%esp), %eax 68 movl 8(%esp), %eax
65 LOCK(3) 69 LOCK(3)
66 andl %eax, (%edx) 70 andl %eax, (%edx)
67 ret 71 ret
68 72
69ENTRY(_atomic_and_32_nv) 73ENTRY(_atomic_and_32_nv)
70 movl 4(%esp), %edx 74 movl 4(%esp), %edx
71 movl (%edx), %eax 75 movl (%edx), %eax
720: 760:
73 movl %eax, %ecx 77 movl %eax, %ecx
74 andl 8(%esp), %ecx 78 andl 8(%esp), %ecx
75 LOCK(4) 79 LOCK(4)
76 cmpxchgl %ecx, (%edx) 80 cmpxchgl %ecx, (%edx)
77 jnz 1f 81 jnz 1f
78 movl %ecx, %eax 82 movl %ecx, %eax
79 ret 83 ret
801: 841:
81 jmp 0b 85 jmp 0b
82 86
83ENTRY(_atomic_dec_32) 87ENTRY(_atomic_dec_32)
84 movl 4(%esp), %edx 88 movl 4(%esp), %edx
85 LOCK(5) 89 LOCK(5)
86 decl (%edx) 90 decl (%edx)
87 ret 91 ret
88 92
89ENTRY(_atomic_dec_32_nv) 93ENTRY(_atomic_dec_32_nv)
90 movl 4(%esp), %edx 94 movl 4(%esp), %edx
91 movl $-1, %eax 95 movl $-1, %eax
92 LOCK(6) 96 LOCK(6)
93 xaddl %eax, (%edx) 97 xaddl %eax, (%edx)
94 decl %eax 98 decl %eax
95 ret 99 ret
96 100
97ENTRY(_atomic_inc_32) 101ENTRY(_atomic_inc_32)
98 movl 4(%esp), %edx 102 movl 4(%esp), %edx
99 LOCK(7) 103 LOCK(7)
100 incl (%edx) 104 incl (%edx)
101 ret 105 ret
102 106
103ENTRY(_atomic_inc_32_nv) 107ENTRY(_atomic_inc_32_nv)
104 movl 4(%esp), %edx 108 movl 4(%esp), %edx
105 movl $1, %eax 109 movl $1, %eax
106 LOCK(8) 110 LOCK(8)
107 xaddl %eax, (%edx) 111 xaddl %eax, (%edx)
108 incl %eax 112 incl %eax
109 ret 113 ret
110 114
111ENTRY(_atomic_or_32) 115ENTRY(_atomic_or_32)
112 movl 4(%esp), %edx 116 movl 4(%esp), %edx
113 movl 8(%esp), %eax 117 movl 8(%esp), %eax
114 LOCK(9) 118 LOCK(9)
115 orl %eax, (%edx) 119 orl %eax, (%edx)
116 ret 120 ret
117 121
118ENTRY(_atomic_or_32_nv) 122ENTRY(_atomic_or_32_nv)
119 movl 4(%esp), %edx 123 movl 4(%esp), %edx
120 movl (%edx), %eax 124 movl (%edx), %eax
1210: 1250:
122 movl %eax, %ecx 126 movl %eax, %ecx
123 orl 8(%esp), %ecx 127 orl 8(%esp), %ecx
124 LOCK(10) 128 LOCK(10)
125 cmpxchgl %ecx, (%edx) 129 cmpxchgl %ecx, (%edx)
126 jnz 1f 130 jnz 1f
127 movl %ecx, %eax 131 movl %ecx, %eax
128 ret 132 ret
1291: 1331:
130 jmp 0b 134 jmp 0b
131 135
132ENTRY(_atomic_swap_32) 136ENTRY(_atomic_swap_32)
133 movl 4(%esp), %edx 137 movl 4(%esp), %edx
134 movl 8(%esp), %eax 138 movl 8(%esp), %eax
135 xchgl %eax, (%edx) 139 xchgl %eax, (%edx)
136 ret 140 ret
137 141
138ENTRY(_atomic_cas_32) 142ENTRY(_atomic_cas_32)
139 movl 4(%esp), %edx 143 movl 4(%esp), %edx
140 movl 8(%esp), %eax 144 movl 8(%esp), %eax
141 movl 12(%esp), %ecx 145 movl 12(%esp), %ecx
142 LOCK(12) 146 LOCK(12)
143 cmpxchgl %ecx, (%edx) 147 cmpxchgl %ecx, (%edx)
144 /* %eax now contains the old value */ 148 /* %eax now contains the old value */
145 ret 149 ret
146 150
147ENTRY(_atomic_cas_32_ni) 151ENTRY(_atomic_cas_32_ni)
148 movl 4(%esp), %edx 152 movl 4(%esp), %edx
149 movl 8(%esp), %eax 153 movl 8(%esp), %eax
150 movl 12(%esp), %ecx 154 movl 12(%esp), %ecx
151 cmpxchgl %ecx, (%edx) 155 cmpxchgl %ecx, (%edx)
152 /* %eax now contains the old value */ 156 /* %eax now contains the old value */
153 ret 157 ret
154 158
155ENTRY(_membar_consumer) 159ENTRY(_membar_consumer)
156 LOCK(13) 160 LOCK(13)
157 addl $0, -4(%esp) 161 addl $0, -4(%esp)
158 ret 162 ret
159ENDLABEL(membar_consumer_end) 163ENDLABEL(membar_consumer_end)
160 164
161ENTRY(_membar_producer) 165ENTRY(_membar_producer)
162 /* A store is enough */ 166 /* A store is enough */
163 movl $0, -4(%esp) 167 movl $0, -4(%esp)
164 ret 168 ret
165ENDLABEL(membar_producer_end) 169ENDLABEL(membar_producer_end)
166 170
167ENTRY(_membar_sync) 171ENTRY(_membar_sync)
168 LOCK(14) 172 LOCK(14)
169 addl $0, -4(%esp) 173 addl $0, -4(%esp)
170 ret 174 ret
171ENDLABEL(membar_sync_end) 175ENDLABEL(membar_sync_end)
172 176
173#ifdef _KERNEL 177#ifdef _HARDKERNEL
174ENTRY(_atomic_cas_64) 178ENTRY(_atomic_cas_64)
175 pushf 179 pushf
176 cli 180 cli
177 pushl %edi 181 pushl %edi
178 pushl %ebx 182 pushl %ebx
179 movl 12(%esp), %edi 183 movl 12(%esp), %edi
180 movl 16(%esp), %eax 184 movl 16(%esp), %eax
181 movl 20(%esp), %edx 185 movl 20(%esp), %edx
182 movl 24(%esp), %ebx 186 movl 24(%esp), %ebx
183 movl 28(%esp), %ecx 187 movl 28(%esp), %ecx
184 cmpl 0(%edi), %eax 188 cmpl 0(%edi), %eax
185 jne 2f 189 jne 2f
186 cmpl 4(%edi), %edx 190 cmpl 4(%edi), %edx
187 jne 2f 191 jne 2f
188 movl %ebx, 0(%edi) 192 movl %ebx, 0(%edi)
189 movl %ecx, 4(%edi) 193 movl %ecx, 4(%edi)
1901: 1941:
191 popl %ebx 195 popl %ebx
192 popl %edi 196 popl %edi
193 popf 197 popf
194 ret 198 ret
1952: 1992:
196 movl 0(%edi), %eax 200 movl 0(%edi), %eax
197 movl 4(%edi), %edx 201 movl 4(%edi), %edx
198 jmp 1b 202 jmp 1b
199ENDLABEL(_atomic_cas_64_end) 203ENDLABEL(_atomic_cas_64_end)
200 204
201ENTRY(_atomic_cas_cx8) 205ENTRY(_atomic_cas_cx8)
202 pushl %edi 206 pushl %edi
203 pushl %ebx 207 pushl %ebx
204 movl 12(%esp), %edi 208 movl 12(%esp), %edi
205 movl 16(%esp), %eax 209 movl 16(%esp), %eax
206 movl 20(%esp), %edx 210 movl 20(%esp), %edx
207 movl 24(%esp), %ebx 211 movl 24(%esp), %ebx
208 movl 28(%esp), %ecx 212 movl 28(%esp), %ecx
209 LOCK(15) 213 LOCK(15)
210 cmpxchg8b (%edi) 214 cmpxchg8b (%edi)
211 popl %ebx 215 popl %ebx
212 popl %edi 216 popl %edi
213 ret 217 ret
214 .space 32, 0x90 218 .space 32, 0x90
215ENDLABEL(_atomic_cas_cx8_end) 219ENDLABEL(_atomic_cas_cx8_end)
216 220
217ENTRY(sse2_lfence) 221ENTRY(sse2_lfence)
218 lfence 222 lfence
219 ret 223 ret
220ENDLABEL(sse2_lfence_end) 224ENDLABEL(sse2_lfence_end)
221 225
222ENTRY(sse2_mfence) 226ENTRY(sse2_mfence)
223 mfence 227 mfence
224 ret 228 ret
225ENDLABEL(sse2_mfence_end) 229ENDLABEL(sse2_mfence_end)
226 230
227atomic_lockpatch: 231atomic_lockpatch:
228 .globl atomic_lockpatch 232 .globl atomic_lockpatch
229 .long .Lpatch1, .Lpatch2, .Lpatch3, .Lpatch4, .Lpatch5 233 .long .Lpatch1, .Lpatch2, .Lpatch3, .Lpatch4, .Lpatch5
230 .long .Lpatch6, .Lpatch7, .Lpatch8, .Lpatch9, .Lpatch10 234 .long .Lpatch6, .Lpatch7, .Lpatch8, .Lpatch9, .Lpatch10
231 .long .Lpatch12, .Lpatch13, .Lpatch14, .Lpatch15, 0 235 .long .Lpatch12, .Lpatch13, .Lpatch14, .Lpatch15, 0
232#else 236#else
233ENTRY(_atomic_cas_64) 237ENTRY(_atomic_cas_64)
234 pushl %edi 238 pushl %edi
235 pushl %ebx 239 pushl %ebx
236 movl 12(%esp), %edi 240 movl 12(%esp), %edi
237 movl 16(%esp), %eax 241 movl 16(%esp), %eax
238 movl 20(%esp), %edx 242 movl 20(%esp), %edx
239 movl 24(%esp), %ebx 243 movl 24(%esp), %ebx
240 movl 28(%esp), %ecx 244 movl 28(%esp), %ecx
241 lock 245 lock
242 cmpxchg8b (%edi) 246 cmpxchg8b (%edi)
243 popl %ebx 247 popl %ebx
244 popl %edi 248 popl %edi
245 ret 249 ret
246#endif /* _KERNEL */ 250#endif /* _HARDKERNEL */
247 251
248ALIAS(atomic_add_32,_atomic_add_32) 252ALIAS(atomic_add_32,_atomic_add_32)
249ALIAS(atomic_add_int,_atomic_add_32) 253ALIAS(atomic_add_int,_atomic_add_32)
250ALIAS(atomic_add_long,_atomic_add_32) 254ALIAS(atomic_add_long,_atomic_add_32)
251ALIAS(atomic_add_ptr,_atomic_add_32) 255ALIAS(atomic_add_ptr,_atomic_add_32)
252 256
253ALIAS(atomic_add_32_nv,_atomic_add_32_nv) 257ALIAS(atomic_add_32_nv,_atomic_add_32_nv)
254ALIAS(atomic_add_int_nv,_atomic_add_32_nv) 258ALIAS(atomic_add_int_nv,_atomic_add_32_nv)
255ALIAS(atomic_add_long_nv,_atomic_add_32_nv) 259ALIAS(atomic_add_long_nv,_atomic_add_32_nv)
256ALIAS(atomic_add_ptr_nv,_atomic_add_32_nv) 260ALIAS(atomic_add_ptr_nv,_atomic_add_32_nv)
257 261
258ALIAS(atomic_and_32,_atomic_and_32) 262ALIAS(atomic_and_32,_atomic_and_32)
259ALIAS(atomic_and_uint,_atomic_and_32) 263ALIAS(atomic_and_uint,_atomic_and_32)
260ALIAS(atomic_and_ulong,_atomic_and_32) 264ALIAS(atomic_and_ulong,_atomic_and_32)
261ALIAS(atomic_and_ptr,_atomic_and_32) 265ALIAS(atomic_and_ptr,_atomic_and_32)
262 266
263ALIAS(atomic_and_32_nv,_atomic_and_32_nv) 267ALIAS(atomic_and_32_nv,_atomic_and_32_nv)
264ALIAS(atomic_and_uint_nv,_atomic_and_32_nv) 268ALIAS(atomic_and_uint_nv,_atomic_and_32_nv)
265ALIAS(atomic_and_ulong_nv,_atomic_and_32_nv) 269ALIAS(atomic_and_ulong_nv,_atomic_and_32_nv)
266ALIAS(atomic_and_ptr_nv,_atomic_and_32_nv) 270ALIAS(atomic_and_ptr_nv,_atomic_and_32_nv)
267 271
268ALIAS(atomic_dec_32,_atomic_dec_32) 272ALIAS(atomic_dec_32,_atomic_dec_32)
269ALIAS(atomic_dec_uint,_atomic_dec_32) 273ALIAS(atomic_dec_uint,_atomic_dec_32)
270ALIAS(atomic_dec_ulong,_atomic_dec_32) 274ALIAS(atomic_dec_ulong,_atomic_dec_32)
271ALIAS(atomic_dec_ptr,_atomic_dec_32) 275ALIAS(atomic_dec_ptr,_atomic_dec_32)
272 276
273ALIAS(atomic_dec_32_nv,_atomic_dec_32_nv) 277ALIAS(atomic_dec_32_nv,_atomic_dec_32_nv)
274ALIAS(atomic_dec_uint_nv,_atomic_dec_32_nv) 278ALIAS(atomic_dec_uint_nv,_atomic_dec_32_nv)
275ALIAS(atomic_dec_ulong_nv,_atomic_dec_32_nv) 279ALIAS(atomic_dec_ulong_nv,_atomic_dec_32_nv)
276ALIAS(atomic_dec_ptr_nv,_atomic_dec_32_nv) 280ALIAS(atomic_dec_ptr_nv,_atomic_dec_32_nv)
277 281
278ALIAS(atomic_inc_32,_atomic_inc_32) 282ALIAS(atomic_inc_32,_atomic_inc_32)
279ALIAS(atomic_inc_uint,_atomic_inc_32) 283ALIAS(atomic_inc_uint,_atomic_inc_32)
280ALIAS(atomic_inc_ulong,_atomic_inc_32) 284ALIAS(atomic_inc_ulong,_atomic_inc_32)
281ALIAS(atomic_inc_ptr,_atomic_inc_32) 285ALIAS(atomic_inc_ptr,_atomic_inc_32)
282 286
283ALIAS(atomic_inc_32_nv,_atomic_inc_32_nv) 287ALIAS(atomic_inc_32_nv,_atomic_inc_32_nv)
284ALIAS(atomic_inc_uint_nv,_atomic_inc_32_nv) 288ALIAS(atomic_inc_uint_nv,_atomic_inc_32_nv)
285ALIAS(atomic_inc_ulong_nv,_atomic_inc_32_nv) 289ALIAS(atomic_inc_ulong_nv,_atomic_inc_32_nv)
286ALIAS(atomic_inc_ptr_nv,_atomic_inc_32_nv) 290ALIAS(atomic_inc_ptr_nv,_atomic_inc_32_nv)
287 291
288ALIAS(atomic_or_32,_atomic_or_32) 292ALIAS(atomic_or_32,_atomic_or_32)
289ALIAS(atomic_or_uint,_atomic_or_32) 293ALIAS(atomic_or_uint,_atomic_or_32)
290ALIAS(atomic_or_ulong,_atomic_or_32) 294ALIAS(atomic_or_ulong,_atomic_or_32)
291ALIAS(atomic_or_ptr,_atomic_or_32) 295ALIAS(atomic_or_ptr,_atomic_or_32)
292 296
293ALIAS(atomic_or_32_nv,_atomic_or_32_nv) 297ALIAS(atomic_or_32_nv,_atomic_or_32_nv)
294ALIAS(atomic_or_uint_nv,_atomic_or_32_nv) 298ALIAS(atomic_or_uint_nv,_atomic_or_32_nv)
295ALIAS(atomic_or_ulong_nv,_atomic_or_32_nv) 299ALIAS(atomic_or_ulong_nv,_atomic_or_32_nv)
296ALIAS(atomic_or_ptr_nv,_atomic_or_32_nv) 300ALIAS(atomic_or_ptr_nv,_atomic_or_32_nv)
297 301
298ALIAS(atomic_swap_32,_atomic_swap_32) 302ALIAS(atomic_swap_32,_atomic_swap_32)
299ALIAS(atomic_swap_uint,_atomic_swap_32) 303ALIAS(atomic_swap_uint,_atomic_swap_32)
300ALIAS(atomic_swap_ulong,_atomic_swap_32) 304ALIAS(atomic_swap_ulong,_atomic_swap_32)
301ALIAS(atomic_swap_ptr,_atomic_swap_32) 305ALIAS(atomic_swap_ptr,_atomic_swap_32)
302 306
303ALIAS(atomic_cas_32,_atomic_cas_32) 307ALIAS(atomic_cas_32,_atomic_cas_32)
304ALIAS(atomic_cas_uint,_atomic_cas_32) 308ALIAS(atomic_cas_uint,_atomic_cas_32)
305ALIAS(atomic_cas_ulong,_atomic_cas_32) 309ALIAS(atomic_cas_ulong,_atomic_cas_32)
306ALIAS(atomic_cas_ptr,_atomic_cas_32) 310ALIAS(atomic_cas_ptr,_atomic_cas_32)
307 311
308ALIAS(atomic_cas_32_ni,_atomic_cas_32_ni) 312ALIAS(atomic_cas_32_ni,_atomic_cas_32_ni)
309ALIAS(atomic_cas_uint_ni,_atomic_cas_32_ni) 313ALIAS(atomic_cas_uint_ni,_atomic_cas_32_ni)
310ALIAS(atomic_cas_ulong_ni,_atomic_cas_32_ni) 314ALIAS(atomic_cas_ulong_ni,_atomic_cas_32_ni)
311ALIAS(atomic_cas_ptr_ni,_atomic_cas_32_ni) 315ALIAS(atomic_cas_ptr_ni,_atomic_cas_32_ni)
312 316
313ALIAS(atomic_cas_64,_atomic_cas_64) 317ALIAS(atomic_cas_64,_atomic_cas_64)
314ALIAS(atomic_cas_64_ni,_atomic_cas_64) 318ALIAS(atomic_cas_64_ni,_atomic_cas_64)
315 319
316ALIAS(membar_consumer,_membar_consumer) 320ALIAS(membar_consumer,_membar_consumer)
317ALIAS(membar_producer,_membar_producer) 321ALIAS(membar_producer,_membar_producer)
318ALIAS(membar_enter,_membar_consumer) 322ALIAS(membar_enter,_membar_consumer)
319ALIAS(membar_exit,_membar_producer) 323ALIAS(membar_exit,_membar_producer)
320ALIAS(membar_sync,_membar_sync) 324ALIAS(membar_sync,_membar_sync)
321 325
322STRONG_ALIAS(_atomic_add_int,_atomic_add_32) 326STRONG_ALIAS(_atomic_add_int,_atomic_add_32)
323STRONG_ALIAS(_atomic_add_long,_atomic_add_32) 327STRONG_ALIAS(_atomic_add_long,_atomic_add_32)
324STRONG_ALIAS(_atomic_add_ptr,_atomic_add_32) 328STRONG_ALIAS(_atomic_add_ptr,_atomic_add_32)
325 329
326STRONG_ALIAS(_atomic_add_int_nv,_atomic_add_32_nv) 330STRONG_ALIAS(_atomic_add_int_nv,_atomic_add_32_nv)
327STRONG_ALIAS(_atomic_add_long_nv,_atomic_add_32_nv) 331STRONG_ALIAS(_atomic_add_long_nv,_atomic_add_32_nv)
328STRONG_ALIAS(_atomic_add_ptr_nv,_atomic_add_32_nv) 332STRONG_ALIAS(_atomic_add_ptr_nv,_atomic_add_32_nv)
329 333
330STRONG_ALIAS(_atomic_and_uint,_atomic_and_32) 334STRONG_ALIAS(_atomic_and_uint,_atomic_and_32)
331STRONG_ALIAS(_atomic_and_ulong,_atomic_and_32) 335STRONG_ALIAS(_atomic_and_ulong,_atomic_and_32)
332STRONG_ALIAS(_atomic_and_ptr,_atomic_and_32) 336STRONG_ALIAS(_atomic_and_ptr,_atomic_and_32)
333 337
334STRONG_ALIAS(_atomic_and_uint_nv,_atomic_and_32_nv) 338STRONG_ALIAS(_atomic_and_uint_nv,_atomic_and_32_nv)
335STRONG_ALIAS(_atomic_and_ulong_nv,_atomic_and_32_nv) 339STRONG_ALIAS(_atomic_and_ulong_nv,_atomic_and_32_nv)
336STRONG_ALIAS(_atomic_and_ptr_nv,_atomic_and_32_nv) 340STRONG_ALIAS(_atomic_and_ptr_nv,_atomic_and_32_nv)
337 341
338STRONG_ALIAS(_atomic_dec_uint,_atomic_dec_32) 342STRONG_ALIAS(_atomic_dec_uint,_atomic_dec_32)
339STRONG_ALIAS(_atomic_dec_ulong,_atomic_dec_32) 343STRONG_ALIAS(_atomic_dec_ulong,_atomic_dec_32)
340STRONG_ALIAS(_atomic_dec_ptr,_atomic_dec_32) 344STRONG_ALIAS(_atomic_dec_ptr,_atomic_dec_32)
341 345
342STRONG_ALIAS(_atomic_dec_uint_nv,_atomic_dec_32_nv) 346STRONG_ALIAS(_atomic_dec_uint_nv,_atomic_dec_32_nv)
343STRONG_ALIAS(_atomic_dec_ulong_nv,_atomic_dec_32_nv) 347STRONG_ALIAS(_atomic_dec_ulong_nv,_atomic_dec_32_nv)
344STRONG_ALIAS(_atomic_dec_ptr_nv,_atomic_dec_32_nv) 348STRONG_ALIAS(_atomic_dec_ptr_nv,_atomic_dec_32_nv)
345 349
346STRONG_ALIAS(_atomic_inc_uint,_atomic_inc_32) 350STRONG_ALIAS(_atomic_inc_uint,_atomic_inc_32)
347STRONG_ALIAS(_atomic_inc_ulong,_atomic_inc_32) 351STRONG_ALIAS(_atomic_inc_ulong,_atomic_inc_32)
348STRONG_ALIAS(_atomic_inc_ptr,_atomic_inc_32) 352STRONG_ALIAS(_atomic_inc_ptr,_atomic_inc_32)
349 353
350STRONG_ALIAS(_atomic_inc_uint_nv,_atomic_inc_32_nv) 354STRONG_ALIAS(_atomic_inc_uint_nv,_atomic_inc_32_nv)
351STRONG_ALIAS(_atomic_inc_ulong_nv,_atomic_inc_32_nv) 355STRONG_ALIAS(_atomic_inc_ulong_nv,_atomic_inc_32_nv)
352STRONG_ALIAS(_atomic_inc_ptr_nv,_atomic_inc_32_nv) 356STRONG_ALIAS(_atomic_inc_ptr_nv,_atomic_inc_32_nv)
353 357
354STRONG_ALIAS(_atomic_or_uint,_atomic_or_32) 358STRONG_ALIAS(_atomic_or_uint,_atomic_or_32)
355STRONG_ALIAS(_atomic_or_ulong,_atomic_or_32) 359STRONG_ALIAS(_atomic_or_ulong,_atomic_or_32)
356STRONG_ALIAS(_atomic_or_ptr,_atomic_or_32) 360STRONG_ALIAS(_atomic_or_ptr,_atomic_or_32)
357 361
358STRONG_ALIAS(_atomic_or_uint_nv,_atomic_or_32_nv) 362STRONG_ALIAS(_atomic_or_uint_nv,_atomic_or_32_nv)
359STRONG_ALIAS(_atomic_or_ulong_nv,_atomic_or_32_nv) 363STRONG_ALIAS(_atomic_or_ulong_nv,_atomic_or_32_nv)
360STRONG_ALIAS(_atomic_or_ptr_nv,_atomic_or_32_nv) 364STRONG_ALIAS(_atomic_or_ptr_nv,_atomic_or_32_nv)
361 365
362STRONG_ALIAS(_atomic_swap_uint,_atomic_swap_32) 366STRONG_ALIAS(_atomic_swap_uint,_atomic_swap_32)
363STRONG_ALIAS(_atomic_swap_ulong,_atomic_swap_32) 367STRONG_ALIAS(_atomic_swap_ulong,_atomic_swap_32)
364STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_32) 368STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_32)
365 369
366STRONG_ALIAS(_atomic_cas_uint,_atomic_cas_32) 370STRONG_ALIAS(_atomic_cas_uint,_atomic_cas_32)
367STRONG_ALIAS(_atomic_cas_ulong,_atomic_cas_32) 371STRONG_ALIAS(_atomic_cas_ulong,_atomic_cas_32)
368STRONG_ALIAS(_atomic_cas_ptr,_atomic_cas_32) 372STRONG_ALIAS(_atomic_cas_ptr,_atomic_cas_32)
369 373
370STRONG_ALIAS(_atomic_cas_uint_ni,_atomic_cas_32_ni) 374STRONG_ALIAS(_atomic_cas_uint_ni,_atomic_cas_32_ni)
371STRONG_ALIAS(_atomic_cas_ulong_ni,_atomic_cas_32_ni) 375STRONG_ALIAS(_atomic_cas_ulong_ni,_atomic_cas_32_ni)
372STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_cas_32_ni) 376STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_cas_32_ni)
373 377
374STRONG_ALIAS(_membar_enter,_membar_consumer) 378STRONG_ALIAS(_membar_enter,_membar_consumer)
375STRONG_ALIAS(_membar_exit,_membar_producer) 379STRONG_ALIAS(_membar_exit,_membar_producer)