Lines 367-373
Link Here
|
367 |
template <typename T> |
367 |
template <typename T> |
368 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue) |
368 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue) |
369 |
{ |
369 |
{ |
370 |
register void *old, *tmp; |
370 |
register T *old, *tmp; |
371 |
asm volatile("1:\n" |
371 |
asm volatile("1:\n" |
372 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
372 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
373 |
"mov %3,%1\n" /* tmp=newval; */ |
373 |
"mov %3,%1\n" /* tmp=newval; */ |
Lines 385-391
Link Here
|
385 |
template <typename T> |
385 |
template <typename T> |
386 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue) |
386 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue) |
387 |
{ |
387 |
{ |
388 |
register void *old, *tmp; |
388 |
register T *old, *tmp; |
389 |
asm volatile("1:\n" |
389 |
asm volatile("1:\n" |
390 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
390 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
391 |
"mov %3,%1\n" /* tmp=newval; */ |
391 |
"mov %3,%1\n" /* tmp=newval; */ |
Lines 404-410
Link Here
|
404 |
template <typename T> |
404 |
template <typename T> |
405 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue) |
405 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue) |
406 |
{ |
406 |
{ |
407 |
register void *old, *tmp; |
407 |
register T *old, *tmp; |
408 |
asm volatile("mb\n" |
408 |
asm volatile("mb\n" |
409 |
"1:\n" |
409 |
"1:\n" |
410 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
410 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
Lines 423-429
Link Here
|
423 |
template <typename T> |
423 |
template <typename T> |
424 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd) |
424 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd) |
425 |
{ |
425 |
{ |
426 |
register void *old, *tmp; |
426 |
register T *old, *tmp; |
427 |
asm volatile("1:\n" |
427 |
asm volatile("1:\n" |
428 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
428 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
429 |
"addq %0,%3,%1\n"/* tmp=old+value; */ |
429 |
"addq %0,%3,%1\n"/* tmp=old+value; */ |
Lines 441-447
Link Here
|
441 |
template <typename T> |
441 |
template <typename T> |
442 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd) |
442 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd) |
443 |
{ |
443 |
{ |
444 |
register void *old, *tmp; |
444 |
register T *old, *tmp; |
445 |
asm volatile("1:\n" |
445 |
asm volatile("1:\n" |
446 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
446 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
447 |
"addq %0,%3,%1\n"/* tmp=old+value; */ |
447 |
"addq %0,%3,%1\n"/* tmp=old+value; */ |
Lines 460-466
Link Here
|
460 |
template <typename T> |
460 |
template <typename T> |
461 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd) |
461 |
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd) |
462 |
{ |
462 |
{ |
463 |
register void *old, *tmp; |
463 |
register T *old, *tmp; |
464 |
asm volatile("mb\n" |
464 |
asm volatile("mb\n" |
465 |
"1:\n" |
465 |
"1:\n" |
466 |
"ldq_l %0,%2\n" /* old=*ptr; */ |
466 |
"ldq_l %0,%2\n" /* old=*ptr; */ |