[BACK]Return to atomic.h CVS log [TXT][DIR] Up to [local] / sys / arch / arm / include

Annotation of sys/arch/arm/include/atomic.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: atomic.h,v 1.5 2007/03/17 23:42:06 drahn Exp $        */
                      2:
                      3: /* Public Domain */
                      4:
                      5: #ifndef __ARM_ATOMIC_H__
                      6: #define __ARM_ATOMIC_H__
                      7:
                      8: #if defined(_KERNEL)
                      9:
                     10: /*
                     11:  * on pre-v6 arm processors, it is necessary to disable interrupts if
                     12:  * in the kernel and atomic updates are necessary without full mutexes
                     13:  */
                     14:
                     15: static __inline void
                     16: atomic_setbits_int(__volatile unsigned int *uip, unsigned int v)
                     17: {
                     18:        int oldirqstate;
                     19:        oldirqstate = disable_interrupts(I32_bit|F32_bit);
                     20:        *uip |= v;
                     21:        restore_interrupts(oldirqstate);
                     22: }
                     23:
                     24: static __inline void
                     25: atomic_clearbits_int(__volatile unsigned int *uip, unsigned int v)
                     26: {
                     27:        int oldirqstate;
                     28:        oldirqstate = disable_interrupts(I32_bit|F32_bit);
                     29:        *uip &= ~v;
                     30:        restore_interrupts(oldirqstate);
                     31: }
                     32:
                     33: #endif /* defined(_KERNEL) */
                     34: #endif /* __ARM_ATOMIC_H__ */

CVSweb