Changes in uspace/lib/libc/arch/ppc32/include/atomic.h [228666c:e15e0e8] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libc/arch/ppc32/include/atomic.h
r228666c re15e0e8 27 27 */ 28 28 29 /** @addtogroup libcppc32 29 /** @addtogroup libcppc32 30 30 * @{ 31 31 */ … … 42 42 static inline void atomic_inc(atomic_t *val) 43 43 { 44 atomic_count_ttmp;45 44 long tmp; 45 46 46 asm volatile ( 47 47 "1:\n" … … 50 50 "stwcx. %0, 0, %2\n" 51 51 "bne- 1b" 52 : "=&r" (tmp), 53 "=m" (val->count) 54 : "r" (&val->count), 55 "m" (val->count) 56 : "cc" 57 ); 52 : "=&r" (tmp), "=m" (val->count) 53 : "r" (&val->count), "m" (val->count) 54 : "cc"); 58 55 } 59 56 60 57 static inline void atomic_dec(atomic_t *val) 61 58 { 62 atomic_count_ttmp;63 59 long tmp; 60 64 61 asm volatile ( 65 62 "1:\n" 66 63 "lwarx %0, 0, %2\n" 67 64 "addic %0, %0, -1\n" 68 "stwcx. 65 "stwcx. %0, 0, %2\n" 69 66 "bne- 1b" 70 : "=&r" (tmp), 71 "=m" (val->count) 72 : "r" (&val->count), 73 "m" (val->count) 74 : "cc" 75 ); 67 : "=&r" (tmp), "=m" (val->count) 68 : "r" (&val->count), "m" (val->count) 69 : "cc"); 76 70 } 77 71 78 static inline atomic_count_tatomic_postinc(atomic_t *val)72 static inline long atomic_postinc(atomic_t *val) 79 73 { 80 74 atomic_inc(val); … … 82 76 } 83 77 84 static inline atomic_count_tatomic_postdec(atomic_t *val)78 static inline long atomic_postdec(atomic_t *val) 85 79 { 86 80 atomic_dec(val); … … 88 82 } 89 83 90 static inline atomic_count_tatomic_preinc(atomic_t *val)84 static inline long atomic_preinc(atomic_t *val) 91 85 { 92 86 atomic_inc(val); … … 94 88 } 95 89 96 static inline atomic_count_tatomic_predec(atomic_t *val)90 static inline long atomic_predec(atomic_t *val) 97 91 { 98 92 atomic_dec(val);
Note:
See TracChangeset
for help on using the changeset viewer.