diff -uNr builtin.h.org builtin.h
old
|
new
|
|
7 | 7 | #define _I386_BUILTIN_H |
8 | 8 | |
9 | 9 | #include <sys/cdefs.h> |
10 | | #include <stdint.h> |
11 | 10 | |
12 | 11 | __BEGIN_DECLS |
13 | 12 | |
… |
… |
|
61 | 60 | * @param pu16 Pointer to the value to update. |
62 | 61 | * @param u16 The new value. |
63 | 62 | */ |
64 | | static inline uint16_t __atomic_xchg_word(volatile uint16_t *pu16, uint16_t u16) |
| 63 | static inline __uint16_t __atomic_xchg_word(volatile __uint16_t *pu16, __uint16_t u16) |
65 | 64 | { |
66 | 65 | __asm__ __volatile__ ("xchgw %0, %1" : "=m" (*pu16), "=r" (u16) : "1" (u16)); |
67 | 66 | return u16; |
… |
… |
|
165 | 164 | * @returns The new value. |
166 | 165 | * @param pu32 Pointer to the value to increment. |
167 | 166 | */ |
168 | | static __inline__ uint32_t __atomic_increment_u32(uint32_t __volatile__ *pu32) |
| 167 | static __inline__ __uint32_t __atomic_increment_u32(__uint32_t __volatile__ *pu32) |
169 | 168 | { |
170 | | uint32_t u32; |
| 169 | __uint32_t u32; |
171 | 170 | __asm__ __volatile__("lock; xadd %0, %1\n\t" |
172 | 171 | "incl %0\n\t" |
173 | 172 | : "=r" (u32), |
… |
… |
|
183 | 182 | * @returns The new value. |
184 | 183 | * @param pi32 Pointer to the value to increment. |
185 | 184 | */ |
186 | | static __inline__ int32_t __atomic_increment_s32(int32_t __volatile__ *pi32) |
| 185 | static __inline__ __int32_t __atomic_increment_s32(__int32_t __volatile__ *pi32) |
187 | 186 | { |
188 | | int32_t i32; |
| 187 | __int32_t i32; |
189 | 188 | __asm__ __volatile__("lock; xadd %0, %1\n\t" |
190 | 189 | "incl %0\n\t" |
191 | 190 | : "=r" (i32), |
… |
… |
|
200 | 199 | * |
201 | 200 | * @param pu16 Pointer to the value to increment. |
202 | 201 | */ |
203 | | static __inline__ void __atomic_increment_u16(uint16_t __volatile__ *pu16) |
| 202 | static __inline__ void __atomic_increment_u16(__uint16_t __volatile__ *pu16) |
204 | 203 | { |
205 | 204 | __asm__ __volatile__("lock; incw %0" |
206 | 205 | : "=m" (*pu16) |
… |
… |
|
225 | 224 | * @returns The new value. |
226 | 225 | * @param pu32 Pointer to the value to decrement. |
227 | 226 | */ |
228 | | static __inline__ uint32_t __atomic_decrement_u32(__volatile__ uint32_t *pu32) |
| 227 | static __inline__ __uint32_t __atomic_decrement_u32(__volatile__ __uint32_t *pu32) |
229 | 228 | { |
230 | | uint32_t u32; |
| 229 | __uint32_t u32; |
231 | 230 | __asm__ __volatile__("lock; xadd %0, %1\n\t" |
232 | 231 | "decl %0\n\t" |
233 | 232 | : "=r" (u32), |
… |
… |
|
243 | 242 | * @returns The new value. |
244 | 243 | * @param pi32 Pointer to the value to decrement. |
245 | 244 | */ |
246 | | static __inline__ int32_t __atomic_decrement_s32(__volatile__ int32_t *pi32) |
| 245 | static __inline__ __int32_t __atomic_decrement_s32(__volatile__ __int32_t *pi32) |
247 | 246 | { |
248 | | int32_t i32; |
| 247 | __int32_t i32; |
249 | 248 | __asm__ __volatile__("lock; xadd %0, %1\n\t" |
250 | 249 | "decl %0\n\t" |
251 | 250 | : "=r" (i32), |
… |
… |
|
261 | 260 | * @returns The new value. |
262 | 261 | * @param pu16 Pointer to the value to decrement. |
263 | 262 | */ |
264 | | static __inline__ void __atomic_decrement_u16(uint16_t __volatile__ *pu16) |
| 263 | static __inline__ void __atomic_decrement_u16(__uint16_t __volatile__ *pu16) |
265 | 264 | { |
266 | 265 | __asm__ __volatile__("lock; decw %0" |
267 | 266 | : "=m" (*pu16) |
… |
… |
|
311 | 310 | * @param pu16 Pointer to the value to increment. |
312 | 311 | * @param u16Max *pu16 must not be above this value after the incrementation. |
313 | 312 | */ |
314 | | static inline unsigned __atomic_increment_word_max(volatile uint16_t *pu16, const uint16_t u16Max) |
| 313 | static inline unsigned __atomic_increment_word_max(volatile __uint16_t *pu16, const __uint16_t u16Max) |
315 | 314 | { |
316 | 315 | unsigned rc = 0; |
317 | 316 | __asm__ __volatile__("movw %2, %%ax\n\t" |
… |
… |
|
380 | 379 | * @param pu16 Pointer to the value to decrement. |
381 | 380 | * @param u16Min *pu16 must not be below this value after the decrementation. |
382 | 381 | */ |
383 | | static inline unsigned __atomic_decrement_word_min(volatile uint16_t *pu16, const uint16_t u16Min) |
| 382 | static inline unsigned __atomic_decrement_word_min(volatile __uint16_t *pu16, const __uint16_t u16Min) |
384 | 383 | { |
385 | 384 | unsigned rc = 0; |
386 | 385 | __asm__ __volatile__("movw %2, %%ax\n\t" |
… |
… |
|
414 | 413 | * @param u32New The new value. |
415 | 414 | * @param u32Cur The current value. Only update if *pu32 equals this one. |
416 | 415 | */ |
417 | | static inline unsigned __atomic_cmpxchg32(volatile uint32_t *pu32, uint32_t u32New, uint32_t u32Old) |
| 416 | static inline unsigned __atomic_cmpxchg32(volatile __uint32_t *pu32, __uint32_t u32New, __uint32_t u32Old) |
418 | 417 | { |
419 | 418 | __asm__ __volatile__("lock; cmpxchgl %2, %1\n\t" |
420 | 419 | "setz %%al\n\t" |