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