diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/arch/alpha/arch.pri | 4 | ||||
-rw-r--r-- | src/corelib/arch/alpha/qatomic_alpha.s | 239 | ||||
-rw-r--r-- | src/corelib/arch/qatomic_alpha.h | 126 |
3 files changed, 2 insertions, 367 deletions
diff --git a/src/corelib/arch/alpha/arch.pri b/src/corelib/arch/alpha/arch.pri deleted file mode 100644 index 448a531f07..0000000000 --- a/src/corelib/arch/alpha/arch.pri +++ /dev/null @@ -1,4 +0,0 @@ -# -# Alpha architecture -# -!*-g++*:SOURCES += $$QT_ARCH_CPP/qatomic_alpha.s diff --git a/src/corelib/arch/alpha/qatomic_alpha.s b/src/corelib/arch/alpha/qatomic_alpha.s deleted file mode 100644 index 3bccd12849..0000000000 --- a/src/corelib/arch/alpha/qatomic_alpha.s +++ /dev/null @@ -1,239 +0,0 @@ -;/**************************************************************************** -;** -;** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -;** Contact: http://www.qt-project.org/ -;** -;** This file is part of the QtGui module of the Qt Toolkit. -;** -;** $QT_BEGIN_LICENSE:LGPL$ -;** GNU Lesser General Public License Usage -;** This file may be used under the terms of the GNU Lesser General Public -;** License version 2.1 as published by the Free Software Foundation and -;** appearing in the file LICENSE.LGPL included in the packaging of this -;** file. Please review the following information to ensure the GNU Lesser -;** General Public License version 2.1 requirements will be met: -;** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -;** -;** In addition, as a special exception, Nokia gives you certain additional -;** rights. These rights are described in the Nokia Qt LGPL Exception -;** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -;** -;** GNU General Public License Usage -;** Alternatively, this file may be used under the terms of the GNU General -;** Public License version 3.0 as published by the Free Software Foundation -;** and appearing in the file LICENSE.GPL included in the packaging of this -;** file. Please review the following information to ensure the GNU General -;** Public License version 3.0 requirements will be met: -;** http://www.gnu.org/copyleft/gpl.html. -;** -;** Other Usage -;** Alternatively, this file may be used in accordance with the terms and -;** conditions contained in a signed written agreement between you and Nokia. -;** -;** -;** -;** -;** -;** -;** $QT_END_LICENSE$ -;** -;****************************************************************************/ - .set noreorder - .set volatile - .set noat - .arch ev4 - .text - .align 2 - .align 4 - .globl q_atomic_test_and_set_int - .ent q_atomic_test_and_set_int -q_atomic_test_and_set_int: - .frame $30,0,$26,0 - .prologue 0 -1: ldl_l $0,0($16) - cmpeq $0,$17,$0 - beq $0,3f - mov $18,$0 - stl_c $0,0($16) - beq $0,2f - br 3f -2: br 1b -3: addl $31,$0,$0 - ret $31,($26),1 - .end q_atomic_test_and_set_int - .align 2 - .align 4 - .globl q_atomic_test_and_set_acquire_int - .ent q_atomic_test_and_set_acquire_int -q_atomic_test_and_set_acquire_int: - .frame $30,0,$26,0 - .prologue 0 -1: ldl_l $0,0($16) - cmpeq $0,$17,$0 - beq $0,3f - mov $18,$0 - stl_c $0,0($16) - beq $0,2f - br 3f -2: br 1b -3: mb - addl $31,$0,$0 - ret $31,($26),1 - .end q_atomic_test_and_set_acquire_int - .align 2 - .align 4 - .globl q_atomic_test_and_set_release_int - .ent q_atomic_test_and_set_release_int -q_atomic_test_and_set_release_int: - .frame $30,0,$26,0 - .prologue 0 - mb -1: ldl_l $0,0($16) - cmpeq $0,$17,$0 - beq $0,3f - mov $18,$0 - stl_c $0,0($16) - beq $0,2f - br 3f -2: br 1b -3: addl $31,$0,$0 - ret $31,($26),1 - .end q_atomic_test_and_set_release_int - .align 2 - .align 4 - .globl q_atomic_test_and_set_ptr - .ent q_atomic_test_and_set_ptr -q_atomic_test_and_set_ptr: - .frame $30,0,$26,0 - .prologue 0 -1: ldq_l $0,0($16) - cmpeq $0,$17,$0 - beq $0,3f - mov $18,$0 - stq_c $0,0($16) - beq $0,2f - br 3f -2: br 1b -3: addl $31,$0,$0 - ret $31,($26),1 - .end q_atomic_test_and_set_ptr - .align 2 - .align 4 - .globl q_atomic_increment - .ent q_atomic_increment -q_atomic_increment: - .frame $30,0,$26,0 - .prologue 0 -1: ldl_l $0,0($16) - addl $0,1,$1 - stl_c $1,0($16) - beq $1,2f - br 3f -2: br 1b -3: addl $31,$0,$0 - cmpeq $0,$1,$0 - xor $0,1,$0 - ret $31,($26),1 - .end q_atomic_increment - .align 2 - .align 4 - .globl q_atomic_decrement - .ent q_atomic_decrement -q_atomic_decrement: - .frame $30,0,$26,0 - .prologue 0 -1: ldl_l $0,0($16) - subl $0,1,$1 - stl_c $1,0($16) - beq $1,2f - br 3f -2: br 1b -3: addl $31,$0,$0 - cmpeq $0,1,$0 - xor $0,1,$0 - ret $31,($26),1 - .end q_atomic_decrement - .align 2 - .align 4 - .globl q_atomic_set_int - .ent q_atomic_set_int -q_atomic_set_int: - .frame $30,0,$26,0 - .prologue 0 -1: ldl_l $0,0($16) - mov $17,$1 - stl_c $1,0($16) - beq $1,2f - br 3f -2: br 1b -3: addl $31,$0,$0 - ret $31,($26),1 - .end q_atomic_set_int - .align 2 - .align 4 - .globl q_atomic_set_ptr - .ent q_atomic_set_ptr -q_atomic_set_ptr: - .frame $30,0,$26,0 - .prologue 0 -1: ldq_l $0,0($16) - mov $17,$1 - stq_c $1,0($16) - beq $1,2f - br 3f -2: br 1b -3: ret $31,($26),1 - .end q_atomic_set_ptr - - .align 2 - .align 4 - .globl q_atomic_fetch_and_add_int - .ent q_atomic_fetch_and_add_int -q_atomic_fetch_and_add_int: - .frame $30,0,$26,0 - .prologue 0 -1: ldl_l $0,0($16) - addl $0,$17,$1 - stl_c $1,0($16) - beq $1,2f - br 3f -2: br 1b -3: addl $31,$0,$0 - ret $31,($26),1 - .end q_atomic_fetch_and_add_int - - .align 2 - .align 4 - .globl q_atomic_fetch_and_add_acquire_int - .ent q_atomic_fetch_and_add_acquire_int -q_atomic_fetch_and_add_acquire_int: - .frame $30,0,$26,0 - .prologue 0 -1: ldl_l $0,0($16) - addl $0,$17,$1 - stl_c $1,0($16) - beq $1,2f - br 3f -2: br 1b -3: mb - addl $31,$0,$0 - ret $31,($26),1 - .end q_atomic_fetch_and_add_acquire_int - - .align 2 - .align 4 - .globl q_atomic_fetch_and_add_release_int - .ent q_atomic_fetch_and_add_release_int -q_atomic_fetch_and_add_release_int: - .frame $30,0,$26,0 - .prologue 0 - mb -1: ldl_l $0,0($16) - addl $0,$17,$1 - stl_c $1,0($16) - beq $1,2f - br 3f -2: br 1b -3: addl $31,$0,$0 - ret $31,($26),1 - .end q_atomic_fetch_and_add_release_int diff --git a/src/corelib/arch/qatomic_alpha.h b/src/corelib/arch/qatomic_alpha.h index 432fb62c0a..79546448e6 100644 --- a/src/corelib/arch/qatomic_alpha.h +++ b/src/corelib/arch/qatomic_alpha.h @@ -476,130 +476,8 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueTo return reinterpret_cast<T *>(old); } -#else // !Q_CC_GNU - -extern "C" { - Q_CORE_EXPORT int q_atomic_test_and_set_int(volatile int *ptr, int expected, int newval); - Q_CORE_EXPORT int q_atomic_test_and_set_acquire_int(volatile int *ptr, int expected, int newval); - Q_CORE_EXPORT int q_atomic_test_and_set_release_int(volatile int *ptr, int expected, int newval); - Q_CORE_EXPORT int q_atomic_test_and_set_ptr(volatile void *ptr, void *expected, void *newval); - Q_CORE_EXPORT int q_atomic_increment(volatile int *ptr); - Q_CORE_EXPORT int q_atomic_decrement(volatile int *ptr); - Q_CORE_EXPORT int q_atomic_set_int(volatile int *ptr, int newval); - Q_CORE_EXPORT void *q_atomic_set_ptr(volatile void *ptr, void *newval); - Q_CORE_EXPORT int q_atomic_fetch_and_add_int(volatile int *ptr, int value); - Q_CORE_EXPORT int q_atomic_fetch_and_add_acquire_int(volatile int *ptr, int value); - Q_CORE_EXPORT int q_atomic_fetch_and_add_release_int(volatile int *ptr, int value); -} // extern "C" - -inline bool QBasicAtomicInt::ref() -{ - return q_atomic_increment(&_q_value) != 0; -} - -inline bool QBasicAtomicInt::deref() -{ - return q_atomic_decrement(&_q_value) != 0; -} - -inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue) -{ - return q_atomic_test_and_set_int(&_q_value, expectedValue, newValue) != 0; -} - -inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue) -{ - return q_atomic_test_and_set_acquire_int(&_q_value, expectedValue, newValue) != 0; -} - -inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue) -{ - return q_atomic_test_and_set_release_int(&_q_value, expectedValue, newValue) != 0; -} - -inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue) -{ - return q_atomic_set_int(&_q_value, newValue); -} - -inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue) -{ - return q_atomic_fetch_and_store_acquire_int(&_q_value, newValue); -} - -inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue) -{ - return q_atomic_fetch_and_store_release_int(&_q_value, newValue); -} - -inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd) -{ - return q_atomic_fetch_and_add_int(&_q_value, valueToAdd); -} - -inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd) -{ - return q_atomic_fetch_and_add_acquire_int(&_q_value, valueToAdd); -} - -inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd) -{ - return q_atomic_fetch_and_add_release_int(&_q_value, valueToAdd); -} - -template <typename T> -Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue) -{ - return q_atomic_test_and_set_ptr(&_q_value, expectedValue, newValue) != 0; -} - -template <typename T> -Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue) -{ - return q_atomic_test_and_set_acquire_ptr(&_q_value, expectedValue, newValue) != 0; -} - -template <typename T> -Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue) -{ - return q_atomic_test_and_set_release_ptr(&_q_value, expectedValue, newValue) != 0; -} - -template <typename T> -Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue) -{ - return reinterpret_cast<T *>(q_atomic_set_ptr(&_q_value, newValue)); -} - -template <typename T> -Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue) -{ - return reinterpret_cast<T *>(q_atomic_fetch_and_store_acquire_ptr(&_q_value, newValue)); -} - -template <typename T> -Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue) -{ - return reinterpret_cast<T *>(q_atomic_fetch_and_store_release_ptr(&_q_value, newValue)); -} - -template <typename T> -Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd) -{ - return reinterpret_cast<T *>(q_atomic_fetch_and_add_ptr(&_q_value, newValue)); -} -template <typename T> -Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd) -{ - return reinterpret_cast<T *>(q_atomic_fetch_and_add_acquire_ptr(&_q_value, newValue)); -} - -template <typename T> -Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd) -{ - return reinterpret_cast<T *>(q_atomic_fetch_and_add_release_ptr(&_q_value, newValue)); -} - +#else +# error "This compiler for Alpha is not supported" #endif // Q_CC_GNU inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue) |