Changes in kernel/arch/ppc32/include/atomic.h [df4ed85:7a0359b] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ppc32/include/atomic.h
rdf4ed85 r7a0359b 27 27 */ 28 28 29 /** @addtogroup ppc32 29 /** @addtogroup ppc32 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ppc32_ATOMIC_H_ 37 37 38 static inline void atomic_inc(atomic_t *val) 38 #include <trace.h> 39 40 NO_TRACE static inline void atomic_inc(atomic_t *val) 39 41 { 40 longtmp;41 42 atomic_count_t tmp; 43 42 44 asm volatile ( 43 45 "1:\n" 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) 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) 50 54 : "cc" 51 55 ); 52 56 } 53 57 54 static inline void atomic_dec(atomic_t *val)58 NO_TRACE static inline void atomic_dec(atomic_t *val) 55 59 { 56 longtmp;57 60 atomic_count_t tmp; 61 58 62 asm volatile ( 59 63 "1:\n" 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) 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) 66 72 : "cc" 67 73 ); 68 74 } 69 75 70 static inline longatomic_postinc(atomic_t *val)76 NO_TRACE static inline atomic_count_t atomic_postinc(atomic_t *val) 71 77 { 72 78 atomic_inc(val); … … 74 80 } 75 81 76 static inline longatomic_postdec(atomic_t *val)82 NO_TRACE static inline atomic_count_t atomic_postdec(atomic_t *val) 77 83 { 78 84 atomic_dec(val); … … 80 86 } 81 87 82 static inline longatomic_preinc(atomic_t *val)88 NO_TRACE static inline atomic_count_t atomic_preinc(atomic_t *val) 83 89 { 84 90 atomic_inc(val); … … 86 92 } 87 93 88 static inline longatomic_predec(atomic_t *val)94 NO_TRACE static inline atomic_count_t atomic_predec(atomic_t *val) 89 95 { 90 96 atomic_dec(val);
Note:
See TracChangeset
for help on using the changeset viewer.