Linux Audio

Check our new training course

Loading...
v3.1
 1#ifndef __ASM_SH_CMPXCHG_IRQ_H
 2#define __ASM_SH_CMPXCHG_IRQ_H
 3
 
 
 4static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val)
 
 
 
 
 
 
 
 
 
 
 
 5{
 6	unsigned long flags, retval;
 7
 8	local_irq_save(flags);
 9	retval = *m;
10	*m = val;
11	local_irq_restore(flags);
12	return retval;
13}
14
15static inline unsigned long xchg_u8(volatile u8 *m, unsigned long val)
16{
17	unsigned long flags, retval;
18
19	local_irq_save(flags);
20	retval = *m;
21	*m = val & 0xff;
22	local_irq_restore(flags);
23	return retval;
24}
25
26static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned long old,
27	unsigned long new)
28{
29	__u32 retval;
30	unsigned long flags;
31
32	local_irq_save(flags);
33	retval = *m;
34	if (retval == old)
35		*m = new;
36	local_irq_restore(flags);       /* implies memory barrier  */
37	return retval;
38}
39
40#endif /* __ASM_SH_CMPXCHG_IRQ_H */
v4.6
 1#ifndef __ASM_SH_CMPXCHG_IRQ_H
 2#define __ASM_SH_CMPXCHG_IRQ_H
 3
 4#include <linux/irqflags.h>
 5
 6static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val)
 7{
 8	unsigned long flags, retval;
 9
10	local_irq_save(flags);
11	retval = *m;
12	*m = val;
13	local_irq_restore(flags);
14	return retval;
15}
16
17static inline unsigned long xchg_u16(volatile u16 *m, unsigned long val)
18{
19	unsigned long flags, retval;
20
21	local_irq_save(flags);
22	retval = *m;
23	*m = val;
24	local_irq_restore(flags);
25	return retval;
26}
27
28static inline unsigned long xchg_u8(volatile u8 *m, unsigned long val)
29{
30	unsigned long flags, retval;
31
32	local_irq_save(flags);
33	retval = *m;
34	*m = val & 0xff;
35	local_irq_restore(flags);
36	return retval;
37}
38
39static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned long old,
40	unsigned long new)
41{
42	__u32 retval;
43	unsigned long flags;
44
45	local_irq_save(flags);
46	retval = *m;
47	if (retval == old)
48		*m = new;
49	local_irq_restore(flags);       /* implies memory barrier  */
50	return retval;
51}
52
53#endif /* __ASM_SH_CMPXCHG_IRQ_H */