From 0797676329a08694efe02f5bd2023db864a75981 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Fri, 3 Feb 2012 09:37:48 +0100 Subject: Remove src/corelib/arch/i386/* and src/corelib/arch/x86_64/* We do not want to support out-of-line QAtomic* implementations. Remove these from the i386 and x86_64 implementations. Change-Id: Ib6a9614b7b11bf6bccc9054b177357afd83e33e6 Reviewed-by: Thiago Macieira --- src/corelib/arch/i386/arch.pri | 4 -- src/corelib/arch/i386/qatomic_i386.s | 103 ---------------------------------- src/corelib/arch/qatomic_i386.h | 42 +------------- src/corelib/arch/qatomic_x86_64.h | 61 +------------------- src/corelib/arch/x86_64/arch.pri | 4 -- src/corelib/arch/x86_64/qatomic_sun.s | 91 ------------------------------ 6 files changed, 2 insertions(+), 303 deletions(-) delete mode 100644 src/corelib/arch/i386/arch.pri delete mode 100644 src/corelib/arch/i386/qatomic_i386.s delete mode 100644 src/corelib/arch/x86_64/arch.pri delete mode 100644 src/corelib/arch/x86_64/qatomic_sun.s diff --git a/src/corelib/arch/i386/arch.pri b/src/corelib/arch/i386/arch.pri deleted file mode 100644 index 3101dae01b..0000000000 --- a/src/corelib/arch/i386/arch.pri +++ /dev/null @@ -1,4 +0,0 @@ -# -# i386 architecture -# -!*-g++*:!*-icc*:SOURCES += $$QT_ARCH_CPP/qatomic_i386.s diff --git a/src/corelib/arch/i386/qatomic_i386.s b/src/corelib/arch/i386/qatomic_i386.s deleted file mode 100644 index 08158f926b..0000000000 --- a/src/corelib/arch/i386/qatomic_i386.s +++ /dev/null @@ -1,103 +0,0 @@ - .text - - .align 4,0x90 - .globl q_atomic_test_and_set_int -q_atomic_test_and_set_int: - movl 4(%esp),%ecx - movl 8(%esp),%eax - movl 12(%esp),%edx - lock - cmpxchgl %edx,(%ecx) - mov $0,%eax - sete %al - ret - .align 4,0x90 - .type q_atomic_test_and_set_int,@function - .size q_atomic_test_and_set_int,.-q_atomic_test_and_set_int - - .align 4,0x90 - .globl q_atomic_test_and_set_ptr -q_atomic_test_and_set_ptr: - movl 4(%esp),%ecx - movl 8(%esp),%eax - movl 12(%esp),%edx - lock - cmpxchgl %edx,(%ecx) - mov $0,%eax - sete %al - ret - .align 4,0x90 - .type q_atomic_test_and_set_ptr,@function - .size q_atomic_test_and_set_ptr,.-q_atomic_test_and_set_ptr - - .align 4,0x90 - .globl q_atomic_increment -q_atomic_increment: - movl 4(%esp), %ecx - lock - incl (%ecx) - mov $0,%eax - setne %al - ret - .align 4,0x90 - .type q_atomic_increment,@function - .size q_atomic_increment,.-q_atomic_increment - - .align 4,0x90 - .globl q_atomic_decrement -q_atomic_decrement: - movl 4(%esp), %ecx - lock - decl (%ecx) - mov $0,%eax - setne %al - ret - .align 4,0x90 - .type q_atomic_decrement,@function - .size q_atomic_decrement,.-q_atomic_decrement - - .align 4,0x90 - .globl q_atomic_set_int -q_atomic_set_int: - mov 4(%esp),%ecx - mov 8(%esp),%eax - xchgl %eax,(%ecx) - ret - .align 4,0x90 - .type q_atomic_set_int,@function - .size q_atomic_set_int,.-q_atomic_set_int - - .align 4,0x90 - .globl q_atomic_set_ptr -q_atomic_set_ptr: - mov 4(%esp),%ecx - mov 8(%esp),%eax - xchgl %eax,(%ecx) - ret - .align 4,0x90 - .type q_atomic_set_ptr,@function - .size q_atomic_set_ptr,.-q_atomic_set_ptr - - .align 4,0x90 - .globl q_atomic_fetch_and_add_int -q_atomic_fetch_and_add_int: - mov 4(%esp),%ecx - mov 8(%esp),%eax - lock - xadd %eax,(%ecx) - ret - .align 4,0x90 - .type q_atomic_fetch_and_add_int,@function - .size q_atomic_fetch_and_add_int,.-q_atomic_fetch_and_add_int - - .align 4,0x90 - .globl q_atomic_fetch_and_add_ptr -q_atomic_fetch_and_add_ptr: - mov 4(%esp),%ecx - mov 8(%esp),%eax - lock - xadd %eax,(%ecx) - ret - .align 4,0x90 - .type q_atomic_fetch_and_add_ptr,@function - .size q_atomic_fetch_and_add_ptr,.-q_atomic_fetch_and_add_ptr diff --git a/src/corelib/arch/qatomic_i386.h b/src/corelib/arch/qatomic_i386.h index 9354971219..6fec561177 100644 --- a/src/corelib/arch/qatomic_i386.h +++ b/src/corelib/arch/qatomic_i386.h @@ -345,47 +345,7 @@ template <> struct QBasicAtomicOps<8>: QGenericAtomicOps > #define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_NOT_NATIVE #else - -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_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 void *q_atomic_fetch_and_add_ptr(volatile void *ptr, int value); -} // extern "C" - -template<> template inline -bool QBasicAtomicOps<4>::ref(T &_q_value) -{ - return q_atomic_increment((int *)&_q_value) != 0; -} - -template<> template inline -bool QBasicAtomicOps<4>::deref(T &_q_value) -{ - return q_atomic_decrement((int *)&_q_value) != 0; -} - -template<> template inline -bool QBasicAtomicOps<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) -{ - return q_atomic_test_and_set_int((int*)&_q_value, int(expectedValue), int(newValue)); -} - -template<> template inline -T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) -{ - return T(q_atomic_set_int((int*)&_q_value, int(newValue)); -} - -template<> template inline -T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) -{ - return T(q_atomic_fetch_and_add_int((int *)&_q_value, valueToAdd * QAtomicAdditiveType::AddScale)); -} +# error "This compiler for i386 is not supported" #endif QT_END_NAMESPACE diff --git a/src/corelib/arch/qatomic_x86_64.h b/src/corelib/arch/qatomic_x86_64.h index 9045a642ea..f2fa8ce5f4 100644 --- a/src/corelib/arch/qatomic_x86_64.h +++ b/src/corelib/arch/qatomic_x86_64.h @@ -345,66 +345,7 @@ T QBasicAtomicOps<1>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveTy #define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_WAIT_FREE #else // !Q_CC_INTEL && !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_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 void *q_atomic_fetch_and_add_ptr(volatile void *ptr, qptrdiff value); -} // extern "C" - -template<> template inline -bool QBasicAtomicOps<4>::ref(T &_q_value) -{ - return q_atomic_increment((int *)&_q_value) != 0; -} - -template<> template inline -bool QBasicAtomicOps<4>::deref(T &_q_value) -{ - return q_atomic_decrement((int *)&_q_value) != 0; -} - -template<> template inline -bool QBasicAtomicOps<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) -{ - return q_atomic_test_and_set_int((int*)&_q_value, int(expectedValue), int(newValue)); -} - -template<> template inline -T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) -{ - return T(q_atomic_set_int((int*)&_q_value, int(newValue)); -} - -template<> template inline -T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) -{ - return T(q_atomic_fetch_and_add_int((int *)&_q_value, valueToAdd * QAtomicAdditiveType::AddScale)); -} - -template<> template inline -bool QBasicAtomicOps<8>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) -{ - return q_atomic_test_and_set_ptr(&_q_value, (void*)expectedValue, (void*)newValue); -} - -template<> template inline -T QBasicAtomicOps<8>::fetchAndStoreRelaxed(T &_q_value, T newValue) -{ - return T(q_atomic_set_ptr(&_q_value, (void*)newValue); -} - -template<> template inline -T QBasicAtomicOps<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) -{ - return T(q_atomic_fetch_and_add_int(&_q_value, valueToAdd * QAtomicAdditiveType::AddScale)); -} - +# error "This compiler for x86_64 is not supported" #endif // Q_CC_GNU || Q_CC_INTEL QT_END_NAMESPACE diff --git a/src/corelib/arch/x86_64/arch.pri b/src/corelib/arch/x86_64/arch.pri deleted file mode 100644 index 4145b7b133..0000000000 --- a/src/corelib/arch/x86_64/arch.pri +++ /dev/null @@ -1,4 +0,0 @@ -# -# AMD64 architecture -# -solaris-cc*:SOURCES += $$QT_ARCH_CPP/qatomic_sun.s diff --git a/src/corelib/arch/x86_64/qatomic_sun.s b/src/corelib/arch/x86_64/qatomic_sun.s deleted file mode 100644 index 37969e61cb..0000000000 --- a/src/corelib/arch/x86_64/qatomic_sun.s +++ /dev/null @@ -1,91 +0,0 @@ - .code64 - - .globl q_atomic_increment - .type q_atomic_increment,@function - .section .text, "ax" - .align 16 -q_atomic_increment: - lock - incl (%rdi) - setne %al - ret - .size q_atomic_increment,.-q_atomic_increment - - .globl q_atomic_decrement - .type q_atomic_decrement,@function - .section .text, "ax" - .align 16 -q_atomic_decrement: - lock - decl (%rdi) - setne %al - ret - .size q_atomic_decrement,.-q_atomic_decrement - - .globl q_atomic_test_and_set_int - .type q_atomic_test_and_set_int, @function - .section .text, "ax" - .align 16 -q_atomic_test_and_set_int: - movl %esi,%eax - lock - cmpxchgl %edx,(%rdi) - movl $0,%eax - sete %al - ret - .size q_atomic_test_and_set_int, . - q_atomic_test_and_set_int - - .globl q_atomic_set_int - .type q_atomic_set_int,@function - .section .text, "ax" - .align 16 -q_atomic_set_int: - xchgl %esi,(%rdi) - movl %esi,%eax - ret - .size q_atomic_set_int,.-q_atomic_set_int - - .globl q_atomic_fetch_and_add_int - .type q_atomic_fetch_and_add_int,@function - .section .text, "ax" - .align 16 -q_atomic_fetch_and_add_int: - lock - xaddl %esi,(%rdi) - movl %esi, %eax - ret - .size q_atomic_fetch_and_add_int,.-q_atomic_fetch_and_add_int - - .globl q_atomic_test_and_set_ptr - .type q_atomic_test_and_set_ptr, @function - .section .text, "ax" - .align 16 -q_atomic_test_and_set_ptr: - movq %rsi,%rax - lock - cmpxchgq %rdx,(%rdi) - movq $0, %rax - sete %al - ret - .size q_atomic_test_and_set_ptr, . - q_atomic_test_and_set_ptr - - .globl q_atomic_set_ptr - .type q_atomic_set_ptr,@function - .section .text, "ax" - .align 16 -q_atomic_set_ptr: - xchgq %rsi,(%rdi) - movq %rsi,%rax - ret - .size q_atomic_set_ptr,.-q_atomic_set_ptr - - .globl q_atomic_fetch_and_add_ptr - .type q_atomic_fetch_and_add_ptr,@function - .section .text, "ax" - .align 16 -q_atomic_fetch_and_add_ptr: - lock - xaddq %rsi,(%rdi) - movq %rsi,%rax - ret - .size q_atomic_fetch_and_add_ptr,.-q_atomic_fetch_and_add_ptr -- cgit v1.2.3