Annotation of sys/arch/m68k/include/atomic.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: atomic.h,v 1.3 2007/03/21 05:28:20 miod Exp $ */
2:
3: /* Public Domain */
4:
5: #ifndef __M68K_ATOMIC_H__
6: #define __M68K_ATOMIC_H__
7:
8: #if defined(_KERNEL)
9:
10: static __inline void
11: atomic_setbits_int(__volatile unsigned int *uip, unsigned int v)
12: {
13: unsigned int witness, old, new;
14:
15: do {
16: witness = old = *uip;
17: new = old | v;
18: __asm__ __volatile__ (
19: "casl %0, %2, %1" : "+d"(old), "=m"(*uip) : "d"(new));
20: } while (old != witness);
21: }
22:
23: static __inline void
24: atomic_clearbits_int(__volatile unsigned int *uip, unsigned int v)
25: {
26: unsigned int witness, old, new;
27:
28: do {
29: witness = old = *uip;
30: new = old & ~v;
31: __asm__ __volatile__ (
32: "casl %0, %2, %1" : "+d"(old), "=m"(*uip) : "d"(new));
33: } while (old != witness);
34: }
35:
36: #endif /* defined(_KERNEL) */
37: #endif /* __M68K_ATOMIC_H__ */
CVSweb