Changes in uspace/lib/libc/arch/arm32/include/atomic.h [228666c:cd769305] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libc/arch/arm32/include/atomic.h
r228666c rcd769305 27 27 */ 28 28 29 /** @addtogroup libcarm32 29 /** @addtogroup libcarm32 30 30 * @{ 31 31 */ … … 38 38 39 39 #define LIBC_ARCH_ATOMIC_H_ 40 #define CAS 40 #define CAS 41 41 42 42 #include <atomicdflt.h> … … 46 46 extern uintptr_t *ras_page; 47 47 48 static inline bool cas(atomic_t *val, atomic_count_t ov, atomic_count_tnv)48 static inline bool cas(atomic_t *val, long ov, long nv) 49 49 { 50 atomic_count_tret = 0;51 50 long ret = 0; 51 52 52 /* 53 53 * The following instructions between labels 1 and 2 constitute a … … 75 75 : "memory" 76 76 ); 77 77 78 78 ras_page[0] = 0; 79 asm volatile ( 80 "" ::: "memory" 81 ); 79 asm volatile ("" ::: "memory"); 82 80 ras_page[1] = 0xffffffff; 83 81 84 82 return (bool) ret; 85 83 } … … 91 89 * 92 90 * @return Value after addition. 93 *94 91 */ 95 static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)92 static inline long atomic_add(atomic_t *val, int i) 96 93 { 97 atomic_count_tret = 0;98 94 long ret = 0; 95 99 96 /* 100 97 * The following instructions between labels 1 and 2 constitute a … … 118 115 : [imm] "r" (i) 119 116 ); 120 117 121 118 ras_page[0] = 0; 122 asm volatile ( 123 "" ::: "memory" 124 ); 119 asm volatile ("" ::: "memory"); 125 120 ras_page[1] = 0xffffffff; 126 121 127 122 return ret; 128 123 } … … 132 127 * 133 128 * @param val Variable to be incremented. 134 *135 129 */ 136 130 static inline void atomic_inc(atomic_t *val) … … 143 137 * 144 138 * @param val Variable to be decremented. 145 *146 139 */ 147 140 static inline void atomic_dec(atomic_t *val) … … 155 148 * @param val Variable to be incremented. 156 149 * @return Value after incrementation. 157 *158 150 */ 159 static inline atomic_count_tatomic_preinc(atomic_t *val)151 static inline long atomic_preinc(atomic_t *val) 160 152 { 161 153 return atomic_add(val, 1); … … 167 159 * @param val Variable to be decremented. 168 160 * @return Value after decrementation. 169 *170 161 */ 171 static inline atomic_count_tatomic_predec(atomic_t *val)162 static inline long atomic_predec(atomic_t *val) 172 163 { 173 164 return atomic_add(val, -1); … … 179 170 * @param val Variable to be incremented. 180 171 * @return Value before incrementation. 181 *182 172 */ 183 static inline atomic_count_tatomic_postinc(atomic_t *val)173 static inline long atomic_postinc(atomic_t *val) 184 174 { 185 175 return atomic_add(val, 1) - 1; … … 191 181 * @param val Variable to be decremented. 192 182 * @return Value before decrementation. 193 *194 183 */ 195 static inline atomic_count_tatomic_postdec(atomic_t *val)184 static inline long atomic_postdec(atomic_t *val) 196 185 { 197 186 return atomic_add(val, -1) + 1;
Note:
See TracChangeset
for help on using the changeset viewer.