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

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

1.1     ! nbrk        1: /*     $OpenBSD: atomic.h,v 1.3 2007/03/23 21:07:36 miod Exp $ */
        !             2:
        !             3: /* Public Domain */
        !             4:
        !             5: #ifndef __MIPS64_ATOMIC_H__
        !             6: #define __MIPS64_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:     ll      %0,     0(%1)\n"
        !            17:        "       or      %0,     %2,     %0\n"
        !            18:        "       sc      %0,     0(%1)\n"
        !            19:        "       beqz    %0,     1b\n"
        !            20:        "        nop\n" :
        !            21:                "+r"(tmp) :
        !            22:                "r"(uip), "r"(v) : "memory");
        !            23: }
        !            24:
        !            25: static __inline void
        !            26: atomic_clearbits_int(__volatile unsigned int *uip, unsigned int v)
        !            27: {
        !            28:        unsigned int tmp;
        !            29:
        !            30:        __asm__ __volatile__ (
        !            31:        "1:     ll      %0,     0(%1)\n"
        !            32:        "       and     %0,     %2,     %0\n"
        !            33:        "       sc      %0,     0(%1)\n"
        !            34:        "       beqz    %0,     1b\n"
        !            35:        "        nop\n" :
        !            36:                "+r"(tmp) :
        !            37:                "r"(uip), "r"(~v) : "memory");
        !            38: }
        !            39:
        !            40: #endif /* defined(_KERNEL) */
        !            41: #endif /* __MIPS64_ATOMIC_H__ */

CVSweb