Subversion Repositories HelenOS

Rev

Rev 3424 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3424 Rev 4377
Line 68... Line 68...
68
        );
68
    );
69
 
69
   
70
    return v;
70
    return v;
71
}
71
}
72
 
72
 
-
 
73
static inline uint32_t test_and_set(atomic_t *val) {
-
 
74
    uint32_t tmp, v;
-
 
75
   
-
 
76
    asm volatile (
-
 
77
        "1:\n"
-
 
78
        "   ll %2, %1\n"
-
 
79
        "   bnez %2, 2f\n"
-
 
80
        "   li %0, %3\n"
-
 
81
        "   sc %0, %1\n"
-
 
82
        "   beqz %0, 1b\n"
-
 
83
        "2:\n"
-
 
84
        : "=&r" (tmp), "+m" (val->count), "=&r" (v)
-
 
85
        : "i" (1)
-
 
86
    );
-
 
87
   
-
 
88
    return v;
-
 
89
}
-
 
90
 
73
#endif
91
#endif
74
 
92
 
75
/** @}
93
/** @}
76
 */
94
 */