X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=include%2Fasm-arm%2Fatomic.h;h=f72b63309bc5c80b54fd0f9dc27a46f56a47c0e5;hb=d3cb487149bd706aa6aeb02042332a450978dc1c;hp=75b802719723ad459d719b6f598254fe0dfe02e4;hpb=f055408957750cf759162c364c2a4dfe19765844;p=linux-2.6 diff --git a/include/asm-arm/atomic.h b/include/asm-arm/atomic.h index 75b8027197..f72b63309b 100644 --- a/include/asm-arm/atomic.h +++ b/include/asm-arm/atomic.h @@ -12,6 +12,7 @@ #define __ASM_ARM_ATOMIC_H #include +#include typedef struct { volatile int counter; } atomic_t; @@ -82,11 +83,12 @@ static inline int atomic_sub_return(int i, atomic_t *v) static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new) { - u32 oldval, res; + unsigned long oldval, res; do { __asm__ __volatile__("@ atomic_cmpxchg\n" "ldrex %1, [%2]\n" + "mov %0, #0\n" "teq %1, %3\n" "strexeq %0, %4, [%2]\n" : "=&r" (res), "=&r" (oldval) @@ -203,5 +205,6 @@ 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 #endif #endif