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

Annotation of sys/arch/powerpc/include/atomic.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: atomic.h,v 1.3 2007/03/17 22:10:04 kettenis Exp $     */
        !             2:
        !             3: /* Public Domain */
        !             4:
        !             5: #ifndef __POWERPC_ATOMIC_H__
        !             6: #define __POWERPC_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 tmp;
        !            14:
        !            15:        __asm volatile (
        !            16:            "1: lwarx   %0, 0, %2       \n"
        !            17:            "   or      %0, %1, %0      \n"
        !            18:            "   stwcx.  %0, 0, %2       \n"
        !            19:            "   bne-    1b              \n"
        !            20:            "   sync" : "=&r" (tmp) : "r" (v), "r" (uip) : "memory");
        !            21: }
        !            22:
        !            23: static __inline void
        !            24: atomic_clearbits_int(__volatile unsigned int *uip, unsigned int v)
        !            25: {
        !            26:        unsigned int tmp;
        !            27:
        !            28:        __asm volatile (
        !            29:            "1: lwarx   %0, 0, %2       \n"
        !            30:            "   andc    %0, %0, %1      \n"
        !            31:            "   stwcx.  %0, 0, %2       \n"
        !            32:            "   bne-    1b              \n"
        !            33:            "   sync" : "=&r" (tmp) : "r" (v), "r" (uip) : "memory");
        !            34: }
        !            35:
        !            36: #endif /* defined(_KERNEL) */
        !            37: #endif /* __POWERPC_ATOMIC_H__ */

CVSweb