Module: xenomai-head Branch: master Commit: b0b7000e22c25759785425af43c0e9707621b991 URL: http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=b0b7000e22c25759785425af43c0e9707621b991
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Wed Oct 20 05:53:00 2010 +0200 arm: make atomic.h implementation C++ friendly It gets included by pthread.h. --- include/asm-arm/atomic.h | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/asm-arm/atomic.h b/include/asm-arm/atomic.h index 3701e41..98a7ca5 100644 --- a/include/asm-arm/atomic.h +++ b/include/asm-arm/atomic.h @@ -172,9 +172,9 @@ xnarch_atomic_clear_mask(unsigned long *addr, unsigned long mask) static inline unsigned long xnarch_atomic_cmpxchg(xnarch_atomic_t *ptr, - unsigned long old, unsigned long new) + unsigned long oldval, unsigned long newval) { - unsigned long oldval, res; + unsigned long curval, res; xnarch_memory_barrier(); @@ -184,14 +184,14 @@ xnarch_atomic_cmpxchg(xnarch_atomic_t *ptr, "mov %0, #0\n" "teq %1, %4\n" "strexeq %0, %5, [%3]\n" - : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter) - : "r" (&ptr->counter), "Ir" (old), "r" (new) + : "=&r" (res), "=&r" (curval), "+Qo" (ptr->counter) + : "r" (&ptr->counter), "Ir" (oldval), "r" (newval) : "cc"); } while (res); xnarch_memory_barrier(); - return oldval; + return curval; } static inline int xnarch_atomic_inc_and_test(xnarch_atomic_t *v) @@ -263,8 +263,8 @@ xnarch_atomic_set_mask(unsigned long *addr, unsigned long mask) atomic_dec((atomic_t *)pcounter) #define xnarch_atomic_clear_mask(addr, mask) \ atomic_clear_mask((mask), (addr)) -#define xnarch_atomic_cmpxchg(pcounter, old, new) \ - atomic_cmpxchg((atomic_t *)(pcounter), (old), (new)) +#define xnarch_atomic_cmpxchg(pcounter, oldval, newval) \ + atomic_cmpxchg((atomic_t *)(pcounter), (oldval), (newval)) #define xnarch_atomic_inc_and_test(pcounter) \ atomic_inc_and_test((atomic_t *)pcounter) #define xnarch_atomic_dec_and_test(pcounter) \ @@ -347,9 +347,9 @@ xnarch_atomic_clear_mask(unsigned long *addr, unsigned long mask) static __inline__ unsigned long xnarch_atomic_cmpxchg(xnarch_atomic_t *ptr, - unsigned long old, unsigned long newval) + unsigned long oldval, unsigned long newval) { - register unsigned long asm_old asm("r0") = old; + register unsigned long asm_old asm("r0") = oldval; register unsigned long asm_new asm("r1") = newval; register unsigned long *asm_ptr asm("r2") = (unsigned long *)&ptr->counter; @@ -365,8 +365,8 @@ xnarch_atomic_cmpxchg(xnarch_atomic_t *ptr, : "r"(asm_new), "r"(asm_ptr) : "ip", "cc", "memory"); if (likely(!asm_old)) - return old; - } while ((asm_old = *asm_ptr) == old); + return oldval; + } while ((asm_old = *asm_ptr) == oldval); return asm_old; } _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git