From: Mike Frysinger Date: Sun, 17 Jan 2010 21:55:03 +0000 (-0500) Subject: add atomic operations for Blackfin parts X-Git-Tag: v1.0.23~8 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=d3c6e2b09761960d9eddb147cfee797290f66649;p=alsa-lib.git add atomic operations for Blackfin parts Signed-off-by: Mike Frysinger Signed-off-by: Takashi Iwai --- diff --git a/include/iatomic.h b/include/iatomic.h index 8f6ec228..e92dbfd4 100644 --- a/include/iatomic.h +++ b/include/iatomic.h @@ -1079,6 +1079,29 @@ static __inline__ int atomic_sub_return(int i, volatile atomic_t *v) #endif /* __sh__ */ +#ifdef __bfin__ + +#include + +typedef struct { volatile int counter; } atomic_t; + +#define ATOMIC_INIT(i) { (i) } + +#define atomic_read(v) ((v)->counter) +#define atomic_set(v,i) (((v)->counter) = (i)) +#define atomic_add(i,v) bfin_atomic_add32(&(v)->counter, i) +#define atomic_sub(i,v) bfin_atomic_sub32(&(v)->counter, i) +#define atomic_inc(v) bfin_atomic_inc32(&(v)->counter); +#define atomic_dec(v) bfin_atomic_dec32(&(v)->counter); + +#define mb() __asm__ __volatile__ ("" : : : "memory") +#define rmb() mb() +#define wmb() mb() + +#define IATOMIC_DEFINED 1 + +#endif /* __bfin__ */ + #ifndef IATOMIC_DEFINED /* * non supported architecture.