1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ASM_SH_CMPXCHG_IRQ_H
3 #define __ASM_SH_CMPXCHG_IRQ_H
5 #include <linux/irqflags.h>
7 static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val)
9 unsigned long flags, retval;
11 local_irq_save(flags);
14 local_irq_restore(flags);
18 static inline unsigned long xchg_u16(volatile u16 *m, unsigned long val)
20 unsigned long flags, retval;
22 local_irq_save(flags);
25 local_irq_restore(flags);
29 static inline unsigned long xchg_u8(volatile u8 *m, unsigned long val)
31 unsigned long flags, retval;
33 local_irq_save(flags);
36 local_irq_restore(flags);
40 static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned long old,
46 local_irq_save(flags);
50 local_irq_restore(flags); /* implies memory barrier */
54 #endif /* __ASM_SH_CMPXCHG_IRQ_H */