Annotation of sys/arch/sh/include/atomic.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: atomic.h,v 1.3 2007/04/05 17:35:11 miod Exp $ */
2:
3: /* Public Domain */
4:
5: #ifndef __SH_ATOMIC_H__
6: #define __SH_ATOMIC_H__
7:
8: #if defined(_KERNEL)
9:
10: #include <sh/psl.h>
11:
12: static __inline void
13: atomic_setbits_int(__volatile unsigned int *uip, unsigned int v)
14: {
15: unsigned int sr;
16:
17: __asm__ __volatile__ ("stc sr, %0" : "=r"(sr));
18: __asm__ __volatile__ ("ldc %0, sr" : : "r"(sr | PSL_IMASK));
19: *uip |= v;
20: __asm__ __volatile__ ("ldc %0, sr" : : "r"(sr));
21: }
22:
23: static __inline void
24: atomic_clearbits_int(__volatile unsigned int *uip, unsigned int v)
25: {
26: unsigned int sr;
27:
28: __asm__ __volatile__ ("stc sr, %0" : "=r"(sr));
29: __asm__ __volatile__ ("ldc %0, sr" : : "r"(sr | PSL_IMASK));
30: *uip &= ~v;
31: __asm__ __volatile__ ("ldc %0, sr" : : "r"(sr));
32: }
33:
34: #endif /* defined(_KERNEL) */
35: #endif /* __SH_ATOMIC_H__ */
CVSweb