Changeset 769 for trunk/src/corelib/arch
- Timestamp:
- Aug 2, 2010, 9:27:30 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.6.3 (added) merged: 768 /branches/vendor/nokia/qt/current merged: 767 /branches/vendor/nokia/qt/4.6.2 removed
- Property svn:mergeinfo changed
-
trunk/src/corelib/arch/armv6/qatomic_generic_armv6.cpp
r651 r769 47 47 48 48 #ifdef QT_HAVE_ARMV6 49 49 50 50 51 QT_BEGIN_NAMESPACE … … 55 56 #pragma push 56 57 #pragma arm 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 57 76 Q_CORE_EXPORT asm 58 77 bool QBasicAtomicInt_testAndSetOrdered(volatile int *_q_value, int expectedValue, int newValue) … … 74 93 75 94 Q_CORE_EXPORT asm 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 76 113 int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *_q_value, int newValue) 77 114 { … … 88 125 } 89 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 90 145 Q_CORE_EXPORT asm 91 146 int QBasicAtomicInt_fetchAndAddOrdered(volatile int *_q_value, int valueToAdd) … … 105 160 } 106 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 107 186 Q_CORE_EXPORT asm 108 187 bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *_q_value, … … 126 205 127 206 Q_CORE_EXPORT asm 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 128 225 void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *_q_value, void *newValue) 129 226 { … … 140 237 } 141 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 142 257 Q_CORE_EXPORT asm 143 258 void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *_q_value, qptrdiff valueToAdd) … … 159 274 #pragma pop 160 275 #elif defined (Q_CC_GCCE) 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 161 291 Q_CORE_EXPORT __declspec( naked ) 162 292 bool QBasicAtomicInt_testAndSetOrdered(volatile int *_q_value, int expectedValue, int newValue) … … 177 307 178 308 Q_CORE_EXPORT __declspec( naked ) 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 179 324 int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *_q_value, int newValue) 180 325 { … … 190 335 } 191 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 192 352 Q_CORE_EXPORT __declspec( naked ) 193 353 int QBasicAtomicInt_fetchAndAddOrdered(volatile int *_q_value, int valueToAdd) … … 206 366 } 207 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 208 389 Q_CORE_EXPORT __declspec( naked ) 209 390 bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *_q_value, … … 226 407 227 408 Q_CORE_EXPORT __declspec( naked ) 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 228 424 void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *_q_value, void *newValue) 229 425 { … … 239 435 } 240 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 241 452 Q_CORE_EXPORT __declspec( naked ) 242 453 void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *_q_value, qptrdiff valueToAdd) … … 259 470 QT_END_NAMESPACE 260 471 #endif 472 -
trunk/src/corelib/arch/qatomic_alpha.h
r651 r769 368 368 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue) 369 369 { 370 register void*old, *tmp;370 register *old, *tmp; 371 371 asm volatile("1:\n" 372 372 "ldq_l %0,%2\n" /* old=*ptr; */ … … 386 386 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue) 387 387 { 388 register void*old, *tmp;388 register *old, *tmp; 389 389 asm volatile("1:\n" 390 390 "ldq_l %0,%2\n" /* old=*ptr; */ … … 405 405 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue) 406 406 { 407 register void*old, *tmp;407 register *old, *tmp; 408 408 asm volatile("mb\n" 409 409 "1:\n" … … 424 424 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd) 425 425 { 426 register void*old, *tmp;426 register *old, *tmp; 427 427 asm volatile("1:\n" 428 428 "ldq_l %0,%2\n" /* old=*ptr; */ … … 442 442 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd) 443 443 { 444 register void*old, *tmp;444 register *old, *tmp; 445 445 asm volatile("1:\n" 446 446 "ldq_l %0,%2\n" /* old=*ptr; */ … … 461 461 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd) 462 462 { 463 register void*old, *tmp;463 register *old, *tmp; 464 464 asm volatile("mb\n" 465 465 "1:\n" -
trunk/src/corelib/arch/qatomic_s390.h
r651 r769 367 367 { 368 368 #ifndef __s390x__ 369 return (T*)__CS_OLD_LOOP(reinterpret_cast<volatile long*>(_q_value), (int)newValue, "lr", 370 "", "bcr 15,0\n"); 371 #else 372 return (T*)__CSG_OLD_LOOP(reinterpret_cast<volatile long*>(_q_value), (long)newValue, "lgr", 373 "", "bcr 15,0\n"); 369 return (T*)__CS_OLD_LOOP(&_q_value, (int)newValue, "lr", "", ""); 370 #else 371 return (T*)__CSG_OLD_LOOP(&_q_value, (long)newValue, "lgr", "", ""); 374 372 #endif 375 373 } … … 379 377 { 380 378 #ifndef __s390x__ 381 return (T*)__CS_OLD_LOOP( reinterpret_cast<volatile long*>(_q_value), (int)newValue, "lr", "", "");382 #else 383 return (T*)__CSG_OLD_LOOP( reinterpret_cast<volatile long*>(_q_value), (long)newValue, "lgr", "", "");379 return (T*)__CS_OLD_LOOP("); 380 #else 381 return (T*)__CSG_OLD_LOOP("); 384 382 #endif 385 383 } … … 389 387 { 390 388 #ifndef __s390x__ 391 return (T*)__CS_OLD_LOOP(reinterpret_cast<volatile long*>(_q_value), (int)newValue, "lr", 392 "bcr 15,0 \n", ""); 393 #else 394 return (T*)__CSG_OLD_LOOP(reinterpret_cast<volatile long*>(_q_value), (long)newValue, "lgr", 395 "bcr 15,0\n", ""); 389 return (T*)__CS_OLD_LOOP(&_q_value, (int)newValue, "lr", "bcr 15,0 \n", ""); 390 #else 391 return (T*)__CSG_OLD_LOOP(&_q_value, (long)newValue, "lgr", "bcr 15,0\n", ""); 396 392 #endif 397 393 } -
trunk/src/corelib/arch/qatomic_symbian.h
r651 r769 43 43 #define QATOMIC_SYMBIAN_H 44 44 45 #include < qglobal.h>45 #include <qglobal.h> 46 46 #include <e32std.h> 47 47 … … 105 105 Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *, int); 106 106 Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddOrdered(volatile int *, int); 107 108 109 110 111 112 113 114 115 107 116 108 117 Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *); 109 118 Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *, void *); 110 119 Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *, qptrdiff); 120 121 122 123 124 125 126 127 128 111 129 112 130 // Reference counting … … 134 152 inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue) 135 153 { 136 return testAndSetOrdered(expectedValue, newValue);154 return expectedValue, newValue); 137 155 } 138 156 139 157 inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue) 140 158 { 141 return testAndSetOrdered(expectedValue, newValue);159 return expectedValue, newValue); 142 160 } 143 161 144 162 inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue) 145 163 { 146 return testAndSetOrdered(expectedValue, newValue);164 return expectedValue, newValue); 147 165 } 148 166 … … 156 174 inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue) 157 175 { 158 return fetchAndStoreOrdered(newValue);176 return newValue); 159 177 } 160 178 161 179 inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue) 162 180 { 163 return fetchAndStoreOrdered(newValue);181 return newValue); 164 182 } 165 183 166 184 inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue) 167 185 { 168 return fetchAndStoreOrdered(newValue);186 return newValue); 169 187 } 170 188 … … 178 196 inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd) 179 197 { 180 return fetchAndAddOrdered(valueToAdd);198 return valueToAdd); 181 199 } 182 200 183 201 inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd) 184 202 { 185 return fetchAndAddOrdered(valueToAdd);203 return valueToAdd); 186 204 } 187 205 188 206 inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd) 189 207 { 190 return fetchAndAddOrdered(valueToAdd);208 return valueToAdd); 191 209 } 192 210 … … 196 214 Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue) 197 215 { 198 union { T * volatile * typed; void * volatile * voidp; } pointer; 199 pointer.typed = &_q_value; 200 return QBasicAtomicPointer_testAndSetOrdered(pointer.voidp, expectedValue, newValue); 216 return QBasicAtomicPointer_testAndSetOrdered(reinterpret_cast<void * volatile *>(&_q_value), 217 expectedValue, newValue); 201 218 } 202 219 … … 204 221 Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue) 205 222 { 206 return testAndSetOrdered(expectedValue, newValue); 223 return QBasicAtomicPointer_testAndSetRelaxed(reinterpret_cast<void * volatile *>(&_q_value), 224 expectedValue, newValue); 207 225 } 208 226 … … 210 228 Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue) 211 229 { 212 return testAndSetOrdered(expectedValue, newValue); 230 return QBasicAtomicPointer_testAndSetAcquire(reinterpret_cast<void * volatile *>(&_q_value), 231 expectedValue, newValue); 213 232 } 214 233 … … 216 235 Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue) 217 236 { 218 return testAndSetOrdered(expectedValue, newValue); 237 return QBasicAtomicPointer_testAndSetRelease(reinterpret_cast<void * volatile *>(&_q_value), 238 expectedValue, newValue); 219 239 } 220 240 … … 224 244 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue) 225 245 { 226 union { T * volatile * typed; void * volatile * voidp; } pointer; 227 union { T *typed; void *voidp; } returnValue; 228 pointer.typed = &_q_value; 229 returnValue.voidp = QBasicAtomicPointer_fetchAndStoreOrdered(pointer.voidp, newValue); 230 return returnValue.typed; 246 return static_cast<T*>(QBasicAtomicPointer_fetchAndStoreOrdered( 247 reinterpret_cast<void * volatile *>(&_q_value) 248 , newValue)); 231 249 } 232 250 … … 234 252 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue) 235 253 { 236 return fetchAndStoreOrdered(newValue); 254 return static_cast<T*>(QBasicAtomicPointer_fetchAndStoreRelaxed( 255 reinterpret_cast<void * volatile *>(&_q_value) 256 , newValue)); 237 257 } 238 258 … … 240 260 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue) 241 261 { 242 return fetchAndStoreOrdered(newValue); 262 return static_cast<T*>(QBasicAtomicPointer_fetchAndStoreAcquire( 263 reinterpret_cast<void * volatile *>(&_q_value) 264 , newValue)); 243 265 } 244 266 … … 246 268 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue) 247 269 { 248 return fetchAndStoreOrdered(newValue); 270 return static_cast<T*>(QBasicAtomicPointer_fetchAndStoreRelease( 271 reinterpret_cast<void * volatile *>(&_q_value) 272 , newValue)); 249 273 } 250 274 … … 254 278 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd) 255 279 { 256 union { T * volatile *typed; void * volatile *voidp; } pointer; 257 union { T *typed; void *voidp; } returnValue; 258 pointer.typed = &_q_value; 259 returnValue.voidp = QBasicAtomicPointer_fetchAndAddOrdered(pointer.voidp, valueToAdd * sizeof(T)); 260 return returnValue.typed; 280 return static_cast<T*>(QBasicAtomicPointer_fetchAndAddOrdered( 281 reinterpret_cast<void * volatile *>(&_q_value), 282 valueToAdd * sizeof(T))); 261 283 } 262 284 … … 264 286 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd) 265 287 { 266 return fetchAndAddOrdered(valueToAdd); 288 return static_cast<T*>(QBasicAtomicPointer_fetchAndAddRelaxed( 289 reinterpret_cast<void * volatile *>(&_q_value), 290 valueToAdd * sizeof(T))); 267 291 } 268 292 … … 270 294 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd) 271 295 { 272 return fetchAndAddOrdered(valueToAdd); 296 return static_cast<T*>(QBasicAtomicPointer_fetchAndAddAcquire( 297 reinterpret_cast<void * volatile *>(&_q_value), 298 valueToAdd * sizeof(T))); 273 299 } 274 300 … … 276 302 Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd) 277 303 { 278 return fetchAndAddOrdered(valueToAdd); 304 return static_cast<T*>(QBasicAtomicPointer_fetchAndAddRelease( 305 reinterpret_cast<void * volatile *>(&_q_value), 306 valueToAdd * sizeof(T))); 279 307 } 280 308 -
trunk/src/corelib/arch/sparc/arch.pri
r2 r769 2 2 # SPARC architecture 3 3 # 4 *-64 {4 *-64 { 5 5 SOURCES += $$QT_ARCH_CPP/qatomic64.s 6 6 } -
trunk/src/corelib/arch/symbian/qatomic_symbian.cpp
r651 r769 42 42 #include <QtCore/qglobal.h> 43 43 #include <QtCore/qatomic.h> 44 45 46 47 44 48 45 49 #include <e32debug.h> … … 80 84 Q_CORE_EXPORT bool QBasicAtomicInt::isReferenceCountingNative() 81 85 { 82 #if def QT_HAVE_ARMV686 #if 83 87 return true; 84 88 #else … … 89 93 Q_CORE_EXPORT bool QBasicAtomicInt::isTestAndSetNative() 90 94 { 91 #if def QT_HAVE_ARMV695 #if 92 96 return true; 93 97 #else … … 98 102 Q_CORE_EXPORT bool QBasicAtomicInt::isFetchAndStoreNative() 99 103 { 100 #if def QT_HAVE_ARMV6104 #if 101 105 return true; 102 106 #else … … 107 111 Q_CORE_EXPORT bool QBasicAtomicInt::isFetchAndAddNative() 108 112 { 109 #if def QT_HAVE_ARMV6113 #if 110 114 return true; 111 115 #else … … 116 120 Q_CORE_EXPORT bool QBasicAtomicPointer_isTestAndSetNative() 117 121 { 118 #if def QT_HAVE_ARMV6122 #if 119 123 return true; 120 124 #else … … 125 129 Q_CORE_EXPORT bool QBasicAtomicPointer_isFetchAndStoreNative() 126 130 { 127 #if def QT_HAVE_ARMV6131 #if 128 132 return true; 129 133 #else … … 134 138 Q_CORE_EXPORT bool QBasicAtomicPointer_isFetchAndAddNative() 135 139 { 136 #ifdef QT_HAVE_ARMV6 137 return true; 138 #else 139 return false; 140 #endif 141 } 140 #if !defined(SYMBIAN_E32_ATOMIC_API) && defined(QT_HAVE_ARMV6) 141 return true; 142 #else 143 return false; 144 #endif 145 } 146 147 #ifdef SYMBIAN_E32_ATOMIC_API 148 //Symbian's API is SMP-safe when using SMP kernel, and cheap when using uniprocessor kernel 149 150 //generate compiler error if casting assumptions are wrong (symbian64?) 151 __ASSERT_COMPILE(sizeof(int) == sizeof(TUint32)); 152 __ASSERT_COMPILE(sizeof(void *) == sizeof(TUint32)); 153 154 Q_CORE_EXPORT 155 bool QBasicAtomicInt_testAndSetOrdered(volatile int *_q_value, int expectedValue, int newValue) 156 { 157 return static_cast<bool>(__e32_atomic_cas_ord32(_q_value, 158 reinterpret_cast<TUint32*>(&expectedValue), newValue)); 159 } 160 161 Q_CORE_EXPORT 162 bool QBasicAtomicInt_testAndSetRelaxed(volatile int *_q_value, int expectedValue, int newValue) 163 { 164 return static_cast<bool>(__e32_atomic_cas_rlx32(_q_value, 165 reinterpret_cast<TUint32*>(&expectedValue), newValue)); 166 } 167 168 Q_CORE_EXPORT 169 bool QBasicAtomicInt_testAndSetAcquire(volatile int *_q_value, int expectedValue, int newValue) 170 { 171 return static_cast<bool>(__e32_atomic_cas_acq32(_q_value, 172 reinterpret_cast<TUint32*>(&expectedValue), newValue)); 173 } 174 175 Q_CORE_EXPORT 176 bool QBasicAtomicInt_testAndSetRelease(volatile int *_q_value, int expectedValue, int newValue) 177 { 178 return static_cast<bool>(__e32_atomic_cas_rel32(_q_value, 179 reinterpret_cast<TUint32*>(&expectedValue), newValue)); 180 } 181 182 Q_CORE_EXPORT 183 int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *_q_value, int newValue) 184 { 185 return static_cast<int>(__e32_atomic_swp_ord32(_q_value, newValue)); 186 } 187 188 Q_CORE_EXPORT 189 int QBasicAtomicInt_fetchAndStoreRelaxed(volatile int *_q_value, int newValue) 190 { 191 return static_cast<int>(__e32_atomic_swp_rlx32(_q_value, newValue)); 192 } 193 194 Q_CORE_EXPORT 195 int QBasicAtomicInt_fetchAndStoreAcquire(volatile int *_q_value, int newValue) 196 { 197 return static_cast<int>(__e32_atomic_swp_acq32(_q_value, newValue)); 198 } 199 200 Q_CORE_EXPORT 201 int QBasicAtomicInt_fetchAndStoreRelease(volatile int *_q_value, int newValue) 202 { 203 return static_cast<int>(__e32_atomic_swp_rel32(_q_value, newValue)); 204 } 205 206 Q_CORE_EXPORT 207 int QBasicAtomicInt_fetchAndAddOrdered(volatile int *_q_value, int valueToAdd) 208 { 209 return static_cast<int>(__e32_atomic_add_ord32(_q_value, valueToAdd)); 210 } 211 212 Q_CORE_EXPORT 213 int QBasicAtomicInt_fetchAndAddRelaxed(volatile int *_q_value, int valueToAdd) 214 { 215 return static_cast<int>(__e32_atomic_add_rlx32(_q_value, valueToAdd)); 216 } 217 218 Q_CORE_EXPORT 219 int QBasicAtomicInt_fetchAndAddAcquire(volatile int *_q_value, int valueToAdd) 220 { 221 return static_cast<int>(__e32_atomic_add_acq32(_q_value, valueToAdd)); 222 } 223 224 Q_CORE_EXPORT 225 int QBasicAtomicInt_fetchAndAddRelease(volatile int *_q_value, int valueToAdd) 226 { 227 return static_cast<int>(__e32_atomic_add_rel32(_q_value, valueToAdd)); 228 } 229 230 Q_CORE_EXPORT 231 bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *_q_value, 232 void *expectedValue, 233 void *newValue) 234 { 235 return static_cast<bool>(__e32_atomic_cas_ord_ptr(_q_value, 236 &expectedValue, 237 newValue)); 238 } 239 240 Q_CORE_EXPORT 241 bool QBasicAtomicPointer_testAndSetRelaxed(void * volatile *_q_value, 242 void *expectedValue, 243 void *newValue) 244 { 245 return static_cast<bool>(__e32_atomic_cas_rlx_ptr(_q_value, 246 &expectedValue, 247 newValue)); 248 } 249 250 Q_CORE_EXPORT 251 bool QBasicAtomicPointer_testAndSetAcquire(void * volatile *_q_value, 252 void *expectedValue, 253 void *newValue) 254 { 255 return static_cast<bool>(__e32_atomic_cas_acq_ptr(_q_value, 256 &expectedValue, 257 newValue)); 258 } 259 260 Q_CORE_EXPORT 261 bool QBasicAtomicPointer_testAndSetRelease(void * volatile *_q_value, 262 void *expectedValue, 263 void *newValue) 264 { 265 return static_cast<bool>(__e32_atomic_cas_rel_ptr(_q_value, 266 &expectedValue, 267 newValue)); 268 } 269 270 Q_CORE_EXPORT 271 void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *_q_value, void *newValue) 272 { 273 return __e32_atomic_swp_ord_ptr(_q_value, newValue); 274 } 275 276 Q_CORE_EXPORT 277 void *QBasicAtomicPointer_fetchAndStoreRelaxed(void * volatile *_q_value, void *newValue) 278 { 279 return __e32_atomic_swp_rlx_ptr(_q_value, newValue); 280 } 281 282 Q_CORE_EXPORT 283 void *QBasicAtomicPointer_fetchAndStoreAcquire(void * volatile *_q_value, void *newValue) 284 { 285 return __e32_atomic_swp_acq_ptr(_q_value, newValue); 286 } 287 288 Q_CORE_EXPORT 289 void *QBasicAtomicPointer_fetchAndStoreRelease(void * volatile *_q_value, void *newValue) 290 { 291 return __e32_atomic_swp_rel_ptr(_q_value, newValue); 292 } 293 294 Q_CORE_EXPORT 295 void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *_q_value, qptrdiff valueToAdd) 296 { 297 return __e32_atomic_add_ord_ptr(_q_value, valueToAdd); 298 } 299 300 Q_CORE_EXPORT 301 void *QBasicAtomicPointer_fetchAndAddRelaxed(void * volatile *_q_value, qptrdiff valueToAdd) 302 { 303 return __e32_atomic_add_rlx_ptr(_q_value, valueToAdd); 304 } 305 306 Q_CORE_EXPORT 307 void *QBasicAtomicPointer_fetchAndAddAcquire(void * volatile *_q_value, qptrdiff valueToAdd) 308 { 309 return __e32_atomic_add_acq_ptr(_q_value, valueToAdd); 310 } 311 312 Q_CORE_EXPORT 313 void *QBasicAtomicPointer_fetchAndAddRelease(void * volatile *_q_value, qptrdiff valueToAdd) 314 { 315 return __e32_atomic_add_rel_ptr(_q_value, valueToAdd); 316 } 317 318 #else 319 //Symbian kernels 9.4 and earlier don't expose a suitable API 142 320 143 321 //For ARMv6, the generic atomics are machine coded … … 230 408 } 231 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 232 524 #endif // QT_HAVE_ARMV6 525 233 526 234 527 QT_END_NAMESPACE
Note:
See TracChangeset
for help on using the changeset viewer.