Annotation of sys/arch/m68k/include/atomic.h, Revision 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