include: use get/put_unaligned_* helpers
[safe/jmp/linux-2.6] / include / asm-cris / atomic.h
index 683b05a..5fc8776 100644 (file)
@@ -3,6 +3,8 @@
 #ifndef __ASM_CRIS_ATOMIC__
 #define __ASM_CRIS_ATOMIC__
 
+#include <linux/compiler.h>
+
 #include <asm/system.h>
 #include <asm/arch/atomic.h>
 
@@ -89,7 +91,7 @@ static inline int atomic_inc_return(volatile atomic_t *v)
        unsigned long flags;
        int retval;
        cris_atomic_save(v, flags);
-       retval = (v->counter)++;
+       retval = ++(v->counter);
        cris_atomic_restore(v, flags);
        return retval;
 }
@@ -99,7 +101,7 @@ static inline int atomic_dec_return(volatile atomic_t *v)
        unsigned long flags;
        int retval;
        cris_atomic_save(v, flags);
-       retval = (v->counter)--;
+       retval = --(v->counter);
        cris_atomic_restore(v, flags);
        return retval;
 }
@@ -136,6 +138,8 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
        return ret;
 }
 
+#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
+
 static inline int atomic_add_unless(atomic_t *v, int a, int u)
 {
        int ret;
@@ -156,4 +160,5 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
 #define smp_mb__before_atomic_inc()    barrier()
 #define smp_mb__after_atomic_inc()     barrier()
 
+#include <asm-generic/atomic.h>
 #endif