]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-cris/atomic.h
PCI: add routines for debugging and handling lost interrupts
[linux-2.6-omap-h63xx.git] / include / asm-cris / atomic.h
index 683b05a57d88068527bea8d99343c2425503318c..5fc87768774a25cd0b438550a39d753d27513c85 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