aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-h8300/atomic.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-h8300/atomic.h')
-rw-r--r--include/asm-h8300/atomic.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/asm-h8300/atomic.h b/include/asm-h8300/atomic.h
index 7230f6507995..d50439259491 100644
--- a/include/asm-h8300/atomic.h
+++ b/include/asm-h8300/atomic.h
@@ -82,6 +82,19 @@ static __inline__ int atomic_dec_and_test(atomic_t *v)
82 return ret == 0; 82 return ret == 0;
83} 83}
84 84
85static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
86{
87 int ret;
88 unsigned long flags;
89
90 local_irq_save(flags);
91 ret = v->counter;
92 if (likely(ret == old))
93 v->counter = new;
94 local_irq_restore(flags);
95 return ret;
96}
97
85static __inline__ void atomic_clear_mask(unsigned long mask, unsigned long *v) 98static __inline__ void atomic_clear_mask(unsigned long mask, unsigned long *v)
86{ 99{
87 __asm__ __volatile__("stc ccr,r1l\n\t" 100 __asm__ __volatile__("stc ccr,r1l\n\t"