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 */