Subversion Repositories HelenOS-historic

Rev

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

Rev 475 Rev 477
Line 35... Line 35...
35
 
35
 
36
static inline atomic_t atomic_add(atomic_t *val, int imm)
36
static inline atomic_t atomic_add(atomic_t *val, int imm)
37
{
37
{
38
    atomic_t v;
38
    atomic_t v;
39
 
39
 
40
/* 
40
   
41
 *  __asm__ volatile ("fetchadd8.rel %0 = %1, %2\n" : "=r" (v), "=m" (val) : "i" (imm));
41
    __asm__ volatile ("fetchadd8.rel %0 = %1, %2\n" : "=r" (v), "+m" (*val) : "i" (imm));
42
 */
42
 
43
    *val += imm;
43
    *val += imm;
44
   
44
   
45
    return v;
45
    return v;
46
}
46
}
47
 
47
 
-
 
48
static inline void atomic_inc(atomic_t *val) { atomic_add(val, 1); }
-
 
49
static inline void atomic_dec(atomic_t *val) { atomic_add(val, -1); }
-
 
50
 
-
 
51
 
48
static inline atomic_t atomic_inc(atomic_t *val) { return atomic_add(val, 1); }
52
static inline atomic_t atomic_inc_pre(atomic_t *val) { return atomic_add(val, 1); }
49
static inline atomic_t atomic_dec(atomic_t *val) { return atomic_add(val, -1); }
53
static inline atomic_t atomic_dec_pre(atomic_t *val) { return atomic_add(val, -1); }
-
 
54
 
-
 
55
 
-
 
56
static inline atomic_t atomic_inc_post(atomic_t *val) { return atomic_add(val, 1)+1; }
-
 
57
static inline atomic_t atomic_dec_post(atomic_t *val) { return atomic_add(val, -1)-1; }
-
 
58
 
-
 
59
 
-
 
60
 
50
 
61
 
51
#endif
62
#endif