Changes in kernel/arch/ppc32/include/atomic.h [7a0359b:df4ed85] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ppc32/include/atomic.h
r7a0359b rdf4ed85 27 27 */ 28 28 29 /** @addtogroup ppc32 29 /** @addtogroup ppc32 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ppc32_ATOMIC_H_ 37 37 38 #include <trace.h> 38 static inline void atomic_inc(atomic_t *val) 39 { 40 long tmp; 39 41 40 NO_TRACE static inline void atomic_inc(atomic_t *val)41 {42 atomic_count_t tmp;43 44 42 asm volatile ( 45 43 "1:\n" 46 " lwarx %[tmp], 0, %[count_ptr]\n" 47 " addic %[tmp], %[tmp], 1\n" 48 " stwcx. %[tmp], 0, %[count_ptr]\n" 49 " bne- 1b" 50 : [tmp] "=&r" (tmp), 51 "=m" (val->count) 52 : [count_ptr] "r" (&val->count), 53 "m" (val->count) 44 "lwarx %0, 0, %2\n" 45 "addic %0, %0, 1\n" 46 "stwcx. %0, 0, %2\n" 47 "bne- 1b" 48 : "=&r" (tmp), "=m" (val->count) 49 : "r" (&val->count), "m" (val->count) 54 50 : "cc" 55 51 ); 56 52 } 57 53 58 NO_TRACEstatic inline void atomic_dec(atomic_t *val)54 static inline void atomic_dec(atomic_t *val) 59 55 { 60 atomic_count_ttmp;61 56 long tmp; 57 62 58 asm volatile ( 63 59 "1:\n" 64 " lwarx %[tmp], 0, %[count_ptr]\n" 65 " addic %[tmp], %[tmp], -1\n" 66 " stwcx. %[tmp], 0, %[count_ptr]\n" 67 " bne- 1b" 68 : [tmp] "=&r" (tmp), 69 "=m" (val->count) 70 : [count_ptr] "r" (&val->count), 71 "m" (val->count) 60 "lwarx %0, 0, %2\n" 61 "addic %0, %0, -1\n" 62 "stwcx. %0, 0, %2\n" 63 "bne- 1b" 64 : "=&r" (tmp), "=m" (val->count) 65 : "r" (&val->count), "m" (val->count) 72 66 : "cc" 73 67 ); 74 68 } 75 69 76 NO_TRACE static inline atomic_count_tatomic_postinc(atomic_t *val)70 static inline long atomic_postinc(atomic_t *val) 77 71 { 78 72 atomic_inc(val); … … 80 74 } 81 75 82 NO_TRACE static inline atomic_count_tatomic_postdec(atomic_t *val)76 static inline long atomic_postdec(atomic_t *val) 83 77 { 84 78 atomic_dec(val); … … 86 80 } 87 81 88 NO_TRACE static inline atomic_count_tatomic_preinc(atomic_t *val)82 static inline long atomic_preinc(atomic_t *val) 89 83 { 90 84 atomic_inc(val); … … 92 86 } 93 87 94 NO_TRACE static inline atomic_count_tatomic_predec(atomic_t *val)88 static inline long atomic_predec(atomic_t *val) 95 89 { 96 90 atomic_dec(val);
Note:
See TracChangeset
for help on using the changeset viewer.