Path: blob/master/arch/sh/include/asm/cmpxchg-irq.h
15126 views
#ifndef __ASM_SH_CMPXCHG_IRQ_H1#define __ASM_SH_CMPXCHG_IRQ_H23static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val)4{5unsigned long flags, retval;67local_irq_save(flags);8retval = *m;9*m = val;10local_irq_restore(flags);11return retval;12}1314static inline unsigned long xchg_u8(volatile u8 *m, unsigned long val)15{16unsigned long flags, retval;1718local_irq_save(flags);19retval = *m;20*m = val & 0xff;21local_irq_restore(flags);22return retval;23}2425static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned long old,26unsigned long new)27{28__u32 retval;29unsigned long flags;3031local_irq_save(flags);32retval = *m;33if (retval == old)34*m = new;35local_irq_restore(flags); /* implies memory barrier */36return retval;37}3839#endif /* __ASM_SH_CMPXCHG_IRQ_H */404142