Rev 633 | Rev 1100 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 633 | Rev 1024 | ||
|---|---|---|---|
| Line 57... | Line 57... | ||
| 57 | #else |
57 | #else |
| 58 | __asm__ volatile ("decq %0\n" : "=m" (val->count)); |
58 | __asm__ volatile ("decq %0\n" : "=m" (val->count)); |
| 59 | #endif /* CONFIG_SMP */ |
59 | #endif /* CONFIG_SMP */ |
| 60 | } |
60 | } |
| 61 | 61 | ||
| 62 | static inline count_t atomic_inc_pre(atomic_t *val) |
62 | static inline count_t atomic_postinc(atomic_t *val) |
| 63 | { |
63 | { |
| 64 | count_t r; |
64 | count_t r; |
| 65 | 65 | ||
| 66 | __asm__ volatile ( |
66 | __asm__ volatile ( |
| 67 | "movq $1, %0\n" |
67 | "movq $1, %0\n" |
| Line 70... | Line 70... | ||
| 70 | ); |
70 | ); |
| 71 | 71 | ||
| 72 | return r; |
72 | return r; |
| 73 | } |
73 | } |
| 74 | 74 | ||
| 75 | static inline count_t atomic_dec_pre(atomic_t *val) |
75 | static inline count_t atomic_postdec(atomic_t *val) |
| 76 | { |
76 | { |
| 77 | count_t r; |
77 | count_t r; |
| 78 | 78 | ||
| 79 | __asm__ volatile ( |
79 | __asm__ volatile ( |
| 80 | "movq $-1, %0\n" |
80 | "movq $-1, %0\n" |
| Line 83... | Line 83... | ||
| 83 | ); |
83 | ); |
| 84 | 84 | ||
| 85 | return r; |
85 | return r; |
| 86 | } |
86 | } |
| 87 | 87 | ||
| 88 | #define atomic_inc_post(val) (atomic_inc_pre(val)+1) |
88 | #define atomic_preinc(val) (atomic_postinc(val)+1) |
| 89 | #define atomic_dec_post(val) (atomic_dec_pre(val)-1) |
89 | #define atomic_predec(val) (atomic_postdec(val)-1) |
| 90 | 90 | ||
| 91 | static inline __u64 test_and_set(atomic_t *val) { |
91 | static inline __u64 test_and_set(atomic_t *val) { |
| 92 | __u64 v; |
92 | __u64 v; |
| 93 | 93 | ||
| 94 | __asm__ volatile ( |
94 | __asm__ volatile ( |