From 9b4db5151f81903bf34621b9db27473051b02e80 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Fri, 10 Feb 2012 11:25:32 +0100 Subject: Remove out-of-line atomic implementation for Alpha This implementation has not been tested or supported at all during the Qt 4.x lifetime. Do not bring it with us into Qt 5.x. Only inline assembler with GCC is supported. Change-Id: I31b48721bb7f4c96f4a777da604d80cc63c6fd79 Reviewed-by: Thiago Macieira --- src/corelib/arch/alpha/arch.pri | 4 - src/corelib/arch/alpha/qatomic_alpha.s | 239 --------------------------------- src/corelib/arch/qatomic_alpha.h | 126 +---------------- 3 files changed, 2 insertions(+), 367 deletions(-) delete mode 100644 src/corelib/arch/alpha/arch.pri delete mode 100644 src/corelib/arch/alpha/qatomic_alpha.s (limited to 'src/corelib/arch') 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::fetchAndAddRelease(qptrdiff valueTo return reinterpret_cast(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 -Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetRelaxed(T *expectedValue, T *newValue) -{ - return q_atomic_test_and_set_ptr(&_q_value, expectedValue, newValue) != 0; -} - -template -Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetAcquire(T *expectedValue, T *newValue) -{ - return q_atomic_test_and_set_acquire_ptr(&_q_value, expectedValue, newValue) != 0; -} - -template -Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetRelease(T *expectedValue, T *newValue) -{ - return q_atomic_test_and_set_release_ptr(&_q_value, expectedValue, newValue) != 0; -} - -template -Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreRelaxed(T *newValue) -{ - return reinterpret_cast(q_atomic_set_ptr(&_q_value, newValue)); -} - -template -Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreAcquire(T *newValue) -{ - return reinterpret_cast(q_atomic_fetch_and_store_acquire_ptr(&_q_value, newValue)); -} - -template -Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreRelease(T *newValue) -{ - return reinterpret_cast(q_atomic_fetch_and_store_release_ptr(&_q_value, newValue)); -} - -template -Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelaxed(qptrdiff valueToAdd) -{ - return reinterpret_cast(q_atomic_fetch_and_add_ptr(&_q_value, newValue)); -} -template -Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddAcquire(qptrdiff valueToAdd) -{ - return reinterpret_cast(q_atomic_fetch_and_add_acquire_ptr(&_q_value, newValue)); -} - -template -Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelease(qptrdiff valueToAdd) -{ - return reinterpret_cast(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) -- cgit v1.2.3