Rev 475 | Rev 478 | 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 |