From 48e48f25974afbac2d54e77e92e27a23732fc2c8 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Fri, 10 Feb 2012 11:31:34 +0100 Subject: Remove out-of-line atomic implementation for PowerPC Only support inline assembler with GCC. Support for xlC or other compilers is not provided or tested. The files in src/corelib/arch/vxworks only supported out-of-line PowerPC, so remove it as well. The xlC compiler seems to support GNU-style inline assembly, which we prefer. Anyone wishing to support that compiler again should first test if the inline assembly (the prefered method) works. See http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/topic/com.ibm.xlcpp8l.doc/language/ref/asm.htm#asm Change-Id: I70e56c0b06428bfb6538ca5e101baebd870f92f5 Reviewed-by: Thiago Macieira --- src/corelib/arch/powerpc/arch.pri | 10 - src/corelib/arch/powerpc/qatomic32.s | 525 -------------------------------- src/corelib/arch/powerpc/qatomic64.s | 533 --------------------------------- src/corelib/arch/qatomic_powerpc.h | 134 +-------- src/corelib/arch/vxworks/arch.pri | 6 - src/corelib/arch/vxworks/qatomic_ppc.s | 415 ------------------------- 6 files changed, 1 insertion(+), 1622 deletions(-) delete mode 100644 src/corelib/arch/powerpc/arch.pri delete mode 100644 src/corelib/arch/powerpc/qatomic32.s delete mode 100644 src/corelib/arch/powerpc/qatomic64.s delete mode 100644 src/corelib/arch/vxworks/arch.pri delete mode 100644 src/corelib/arch/vxworks/qatomic_ppc.s (limited to 'src/corelib') diff --git a/src/corelib/arch/powerpc/arch.pri b/src/corelib/arch/powerpc/arch.pri deleted file mode 100644 index 1989ac73a7..0000000000 --- a/src/corelib/arch/powerpc/arch.pri +++ /dev/null @@ -1,10 +0,0 @@ -# -# PowerPC architecture -# -!*-g++* { - *-64 { - SOURCES += $$QT_ARCH_CPP/qatomic64.s - } else { - SOURCES += $$QT_ARCH_CPP/qatomic32.s - } -} diff --git a/src/corelib/arch/powerpc/qatomic32.s b/src/corelib/arch/powerpc/qatomic32.s deleted file mode 100644 index 8e2dbe2e2f..0000000000 --- a/src/corelib/arch/powerpc/qatomic32.s +++ /dev/null @@ -1,525 +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$ -## -############################################################################ - .machine "ppc" - .toc - .csect .text[PR] - - .align 2 - .globl q_atomic_test_and_set_int - .globl .q_atomic_test_and_set_int - .csect q_atomic_test_and_set_int[DS],3 -q_atomic_test_and_set_int: - .long .q_atomic_test_and_set_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_int: - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_int-.q_atomic_test_and_set_int - .short 25 - .byte "q_atomic_test_and_set_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_acquire_int - .globl .q_atomic_test_and_set_acquire_int - .csect q_atomic_test_and_set_acquire_int[DS],3 -q_atomic_test_and_set_acquire_int: - .long .q_atomic_test_and_set_acquire_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_acquire_int: - lwarx 6,0,3 - xor. 6,6,4 - bne $+16 - stwcx. 5,0,3 - bne- $-16 - isync - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_acquire_int-.q_atomic_test_and_set_acquire_int - .short 33 - .byte "q_atomic_test_and_set_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_release_int - .globl .q_atomic_test_and_set_release_int - .csect q_atomic_test_and_set_release_int[DS],3 -q_atomic_test_and_set_release_int: - .long .q_atomic_test_and_set_release_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_release_int: - eieio - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_release_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_release_int-.q_atomic_test_and_set_release_int - .short 33 - .byte "q_atomic_test_and_set_release_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_ptr - .globl .q_atomic_test_and_set_ptr - .csect q_atomic_test_and_set_ptr[DS],3 -q_atomic_test_and_set_ptr: - .long .q_atomic_test_and_set_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_ptr: - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_ptr-.q_atomic_test_and_set_ptr - .short 25 - .byte "q_atomic_test_and_set_ptr" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_acquire_ptr - .globl .q_atomic_test_and_set_acquire_ptr - .csect q_atomic_test_and_set_acquire_ptr[DS],3 -q_atomic_test_and_set_acquire_ptr: - .long .q_atomic_test_and_set_acquire_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_acquire_ptr: - lwarx 6,0,3 - xor. 6,6,4 - bne $+16 - stwcx. 5,0,3 - bne- $-16 - isync - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_acquire_ptr-.q_atomic_test_and_set_acquire_ptr - .short 25 - .byte "q_atomic_test_and_set_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_release_ptr - .globl .q_atomic_test_and_set_release_ptr - .csect q_atomic_test_and_set_release_ptr[DS],3 -q_atomic_test_and_set_release_ptr: - .long .q_atomic_test_and_set_release_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_release_ptr: - eieio - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_release_ptr-.q_atomic_test_and_set_release_ptr - .short 33 - .byte "q_atomic_test_and_set_release_ptr" - .align 2 - - .align 2 - .globl q_atomic_increment - .globl .q_atomic_increment - .csect q_atomic_increment[DS],3 -q_atomic_increment: - .long .q_atomic_increment,TOC[tc0],0 - .csect .text[PR] -.q_atomic_increment: - lwarx 4,0,3 - addi 4,4,1 - stwcx. 4,0,3 - bne- $-12 - mr 3,4 - blr -LT..q_atomic_increment: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_increment-.q_atomic_increment - .short 18 - .byte "q_atomic_increment" - .align 2 - - .align 2 - .globl q_atomic_decrement - .globl .q_atomic_decrement - .csect q_atomic_decrement[DS],3 -q_atomic_decrement: - .long .q_atomic_decrement,TOC[tc0],0 - .csect .text[PR] -.q_atomic_decrement: - lwarx 4,0,3 - subi 4,4,1 - stwcx. 4,0,3 - bne- $-12 - mr 3,4 - blr -LT..q_atomic_decrement: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_decrement-.q_atomic_decrement - .short 18 - .byte "q_atomic_decrement" - .align 2 - - .align 2 - .globl q_atomic_set_int - .globl .q_atomic_set_int - .csect q_atomic_set_int[DS],3 -q_atomic_set_int: - .long .q_atomic_set_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_set_int: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_set_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_set_int-.q_atomic_set_int - .short 16 - .byte "q_atomic_set_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_acquire_int - .globl .q_atomic_fetch_and_store_acquire_int - .csect q_atomic_fetch_and_store_acquire_int[DS],3 -q_atomic_fetch_and_store_acquire_int: - .long .q_atomic_fetch_and_store_acquire_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_store_acquire_int: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_store_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_acquire_int-.q_atomic_fetch_and_store_acquire_int - .short 16 - .byte "q_atomic_fetch_and_store_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_release_int - .globl .q_atomic_fetch_and_store_release_int - .csect q_atomic_fetch_and_store_release_int[DS],3 -q_atomic_fetch_and_store_release_int: - .long .q_atomic_fetch_and_store_release_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_store_release_int: - eieio - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_fetch_and_store_release_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_release_int-.q_atomic_fetch_and_store_release_int - .short 16 - .byte "q_atomic_fetch_and_store_release_int" - .align 2 - - .align 2 - .globl q_atomic_set_ptr - .globl .q_atomic_set_ptr - .csect q_atomic_set_ptr[DS],3 -q_atomic_set_ptr: - .long .q_atomic_set_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_set_ptr: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_set_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_set_ptr-.q_atomic_set_ptr - .short 16 - .byte "q_atomic_set_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_acquire_ptr - .globl .q_atomic_fetch_and_store_acquire_ptr - .csect q_atomic_fetch_and_store_acquire_ptr[DS],3 -q_atomic_fetch_and_store_acquire_ptr: - .long .q_atomic_fetch_and_store_acquire_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_store_acquire_ptr: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_store_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_acquire_ptr-.q_atomic_fetch_and_store_acquire_ptr - .short 16 - .byte "q_atomic_fetch_and_store_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_release_ptr - .globl .q_atomic_fetch_and_store_release_ptr - .csect q_atomic_fetch_and_store_release_ptr[DS],3 -q_atomic_fetch_and_store_release_ptr: - .long .q_atomic_fetch_and_store_release_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_store_release_ptr: - eieio - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_fetch_and_store_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_release_ptr-.q_atomic_fetch_and_store_release_ptr - .short 16 - .byte "q_atomic_fetch_and_store_release_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_int - .globl .q_atomic_fetch_and_add_int - .csect q_atomic_fetch_and_add_int[DS],3 -q_atomic_fetch_and_add_int: - .long .q_atomic_fetch_and_add_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_int: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_int-.q_atomic_fetch_and_add_int - .short 18 - .byte "q_atomic_fetch_and_add_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_acquire_int - .globl .q_atomic_fetch_and_add_acquire_int - .csect q_atomic_fetch_and_add_acquire_int[DS],3 -q_atomic_fetch_and_add_acquire_int: - .long .q_atomic_fetch_and_add_acquire_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_acquire_int: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_add_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_acquire_int-.q_atomic_fetch_and_add_acquire_int - .short 18 - .byte "q_atomic_fetch_and_add_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_release_int - .globl .q_atomic_fetch_and_add_release_int - .csect q_atomic_fetch_and_add_release_int[DS],3 -q_atomic_fetch_and_add_release_int: - .long .q_atomic_fetch_and_add_release_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_release_int: - eieio - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_release_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_release_int-.q_atomic_fetch_and_add_release_int - .short 34 - .byte "q_atomic_fetch_and_add_release_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_ptr - .globl .q_atomic_fetch_and_add_ptr - .csect q_atomic_fetch_and_add_ptr[DS],3 -q_atomic_fetch_and_add_ptr: - .long .q_atomic_fetch_and_add_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_ptr: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_ptr-.q_atomic_fetch_and_add_ptr - .short 26 - .byte "q_atomic_fetch_and_add_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_acquire_ptr - .globl .q_atomic_fetch_and_add_acquire_ptr - .csect q_atomic_fetch_and_add_acquire_ptr[DS],3 -q_atomic_fetch_and_add_acquire_ptr: - .long .q_atomic_fetch_and_add_acquire_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_acquire_ptr: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_add_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_acquire_ptr-.q_atomic_fetch_and_add_acquire_ptr - .short 34 - .byte "q_atomic_fetch_and_add_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_release_ptr - .globl .q_atomic_fetch_and_add_release_ptr - .csect q_atomic_fetch_and_add_release_ptr[DS],3 -q_atomic_fetch_and_add_release_ptr: - .long .q_atomic_fetch_and_add_release_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_release_ptr: - eieio - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_release_ptr-.q_atomic_fetch_and_add_release_ptr - .short 34 - .byte "q_atomic_fetch_and_add_release_ptr" - .align 2 - -_section_.text: - .csect .data[RW],3 - .long _section_.text diff --git a/src/corelib/arch/powerpc/qatomic64.s b/src/corelib/arch/powerpc/qatomic64.s deleted file mode 100644 index 84977d5a93..0000000000 --- a/src/corelib/arch/powerpc/qatomic64.s +++ /dev/null @@ -1,533 +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$ -## -############################################################################ - .machine "ppc64" - .toc - .csect .text[PR] - - .align 2 - .globl q_atomic_test_and_set_int - .globl .q_atomic_test_and_set_int - .csect q_atomic_test_and_set_int[DS],3 -q_atomic_test_and_set_int: - .llong .q_atomic_test_and_set_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_int: - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - extsw 3,3 - blr -LT..q_atomic_test_and_set_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_int-.q_atomic_test_and_set_int - .short 25 - .byte "q_atomic_test_and_set_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_acquire_int - .globl .q_atomic_test_and_set_acquire_int - .csect q_atomic_test_and_set_acquire_int[DS],3 -q_atomic_test_and_set_acquire_int: - .llong .q_atomic_test_and_set_acquire_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_acquire_int: - lwarx 6,0,3 - xor. 6,6,4 - bne $+16 - stwcx. 5,0,3 - bne- $-16 - isync - subfic 3,6,0 - adde 3,3,6 - extsw 3,3 - blr -LT..q_atomic_test_and_set_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_acquire_int-.q_atomic_test_and_set_acquire_int - .short 33 - .byte "q_atomic_test_and_set_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_release_int - .globl .q_atomic_test_and_set_release_int - .csect q_atomic_test_and_set_release_int[DS],3 -q_atomic_test_and_set_release_int: - .llong .q_atomic_test_and_set_release_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_release_int: - eieio - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - extsw 3,3 - blr -LT..q_atomic_test_and_set_release_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_release_int-.q_atomic_test_and_set_release_int - .short 33 - .byte "q_atomic_test_and_set_release_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_ptr - .globl .q_atomic_test_and_set_ptr - .csect q_atomic_test_and_set_ptr[DS],3 -q_atomic_test_and_set_ptr: - .llong .q_atomic_test_and_set_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_ptr: - ldarx 6,0,3 - xor. 6,6,4 - bne $+12 - stdcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_ptr-.q_atomic_test_and_set_ptr - .short 25 - .byte "q_atomic_test_and_set_ptr" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_acquire_ptr - .globl .q_atomic_test_and_set_acquire_ptr - .csect q_atomic_test_and_set_acquire_ptr[DS],3 -q_atomic_test_and_set_acquire_ptr: - .llong .q_atomic_test_and_set_acquire_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_acquire_ptr: - ldarx 6,0,3 - xor. 6,6,4 - bne $+16 - stdcx. 5,0,3 - bne- $-16 - isync - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_acquire_ptr-.q_atomic_test_and_set_acquire_ptr - .short 33 - .byte "q_atomic_test_and_set_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_release_ptr - .globl .q_atomic_test_and_set_release_ptr - .csect q_atomic_test_and_set_release_ptr[DS],3 -q_atomic_test_and_set_release_ptr: - .llong .q_atomic_test_and_set_release_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_test_and_set_release_ptr: - eieio - ldarx 6,0,3 - xor. 6,6,4 - bne $+12 - stdcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_release_ptr-.q_atomic_test_and_set_release_ptr - .short 33 - .byte "q_atomic_test_and_set_release_ptr" - .align 2 - - .align 2 - .globl q_atomic_increment - .globl .q_atomic_increment - .csect q_atomic_increment[DS],3 -q_atomic_increment: - .llong .q_atomic_increment,TOC[tc0],0 - .csect .text[PR] -.q_atomic_increment: - lwarx 4,0,3 - addi 5,4,1 - extsw 4,5 - stwcx. 4,0,3 - bne- $-16 - mr 3,4 - blr -LT..q_atomic_increment: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_increment-.q_atomic_increment - .short 18 - .byte "q_atomic_increment" - .align 2 - - .align 2 - .globl q_atomic_decrement - .globl .q_atomic_decrement - .csect q_atomic_decrement[DS],3 -q_atomic_decrement: - .llong .q_atomic_decrement,TOC[tc0],0 - .csect .text[PR] -.q_atomic_decrement: - lwarx 4,0,3 - subi 5,4,1 - extsw 4,5 - stwcx. 4,0,3 - bne- $-16 - mr 3,4 - blr -LT..q_atomic_decrement: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_decrement-.q_atomic_decrement - .short 18 - .byte "q_atomic_decrement" - .align 2 - - .align 2 - .globl q_atomic_set_int - .globl .q_atomic_set_int - .csect q_atomic_set_int[DS],3 -q_atomic_set_int: - .llong .q_atomic_set_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_set_int: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - extsw 3,5 - blr -LT..q_atomic_set_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_set_int-.q_atomic_set_int - .short 16 - .byte "q_atomic_set_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_acquire_int - .globl .q_atomic_fetch_and_store_acquire_int - .csect q_atomic_fetch_and_store_acquire_int[DS],3 -q_atomic_fetch_and_store_acquire_int: - .llong .q_atomic_fetch_and_store_acquire_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_store_acquire_int: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - isync - extsw 3,5 - blr -LT..q_atomic_fetch_and_store_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_acquire_int-.q_atomic_fetch_and_store_acquire_int - .short 36 - .byte "q_atomic_fetch_and_store_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_release_int - .globl .q_atomic_fetch_and_store_release_int - .csect q_atomic_fetch_and_store_release_int[DS],3 -q_atomic_fetch_and_store_release_int: - .llong .q_atomic_fetch_and_store_release_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_store_release_int: - eieio - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - extsw 3,5 - blr -LT..q_atomic_fetch_and_store_release_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_release_int-.q_atomic_fetch_and_store_release_int - .short 36 - .byte "q_atomic_fetch_and_store_release_int" - .align 2 - - .align 2 - .globl q_atomic_set_ptr - .globl .q_atomic_set_ptr - .csect q_atomic_set_ptr[DS],3 -q_atomic_set_ptr: - .llong .q_atomic_set_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_set_ptr: - ldarx 5,0,3 - stdcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_set_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_set_ptr-.q_atomic_set_ptr - .short 16 - .byte "q_atomic_set_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_acquire_ptr - .globl .q_atomic_fetch_and_store_acquire_ptr - .csect q_atomic_fetch_and_store_acquire_ptr[DS],3 -q_atomic_fetch_and_store_acquire_ptr: - .llong .q_atomic_fetch_and_store_acquire_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_store_acquire_ptr: - ldarx 5,0,3 - stdcx. 4,0,3 - bne- $-8 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_store_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_acquire_ptr-.q_atomic_fetch_and_store_acquire_ptr - .short 36 - .byte "q_atomic_fetch_and_store_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_release_ptr - .globl .q_atomic_fetch_and_store_release_ptr - .csect q_atomic_fetch_and_store_release_ptr[DS],3 -q_atomic_fetch_and_store_release_ptr: - .llong .q_atomic_fetch_and_store_release_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_store_release_ptr: - eieio - ldarx 5,0,3 - stdcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_fetch_and_store_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_release_ptr-.q_atomic_fetch_and_store_release_ptr - .short 36 - .byte "q_atomic_fetch_and_store_release_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_int - .globl .q_atomic_fetch_and_add_int - .csect q_atomic_fetch_and_add_int[DS],3 -q_atomic_fetch_and_add_int: - .llong .q_atomic_fetch_and_add_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_int: - lwarx 5,0,3 - add 6,4,5 - extsw 7,6 - stwcx. 7,0,3 - bne- $-16 - extsw 3,5 - blr -LT..q_atomic_fetch_and_add_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_int-.q_atomic_fetch_and_add_int - .short 26 - .byte "q_atomic_fetch_and_add_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_acquire_int - .globl .q_atomic_fetch_and_add_acquire_int - .csect q_atomic_fetch_and_add_acquire_int[DS],3 -q_atomic_fetch_and_add_acquire_int: - .llong .q_atomic_fetch_and_add_acquire_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_acquire_int: - lwarx 5,0,3 - add 6,4,5 - extsw 7,6 - stwcx. 7,0,3 - bne- $-16 - isync - extsw 3,5 - blr -LT..q_atomic_fetch_and_add_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_acquire_int-.q_atomic_fetch_and_add_acquire_int - .short 34 - .byte "q_atomic_fetch_and_add_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_release_int - .globl .q_atomic_fetch_and_add_release_int - .csect q_atomic_fetch_and_add_release_int[DS],3 -q_atomic_fetch_and_add_release_int: - .llong .q_atomic_fetch_and_add_release_int,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_release_int: - eieio - lwarx 5,0,3 - add 6,4,5 - extsw 7,6 - stwcx. 7,0,3 - bne- $-16 - extsw 3,5 - blr -LT..q_atomic_fetch_and_add_release_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_release_int-.q_atomic_fetch_and_add_release_int - .short 34 - .byte "q_atomic_fetch_and_add_release_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_ptr - .globl .q_atomic_fetch_and_add_ptr - .csect q_atomic_fetch_and_add_ptr[DS],3 -q_atomic_fetch_and_add_ptr: - .llong .q_atomic_fetch_and_add_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_ptr: - ldarx 5,0,3 - add 6,4,5 - stdcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_ptr-.q_atomic_fetch_and_add_ptr - .short 26 - .byte "q_atomic_fetch_and_add_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_acquire_ptr - .globl .q_atomic_fetch_and_add_acquire_ptr - .csect q_atomic_fetch_and_add_acquire_ptr[DS],3 -q_atomic_fetch_and_add_acquire_ptr: - .llong .q_atomic_fetch_and_add_acquire_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_acquire_ptr: - ldarx 5,0,3 - add 6,4,5 - stdcx. 6,0,3 - bne- $-12 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_add_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_acquire_ptr-.q_atomic_fetch_and_add_acquire_ptr - .short 34 - .byte "q_atomic_fetch_and_add_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_release_ptr - .globl .q_atomic_fetch_and_add_release_ptr - .csect q_atomic_fetch_and_add_release_ptr[DS],3 -q_atomic_fetch_and_add_release_ptr: - .llong .q_atomic_fetch_and_add_release_ptr,TOC[tc0],0 - .csect .text[PR] -.q_atomic_fetch_and_add_release_ptr: - eieio - ldarx 5,0,3 - add 6,4,5 - stdcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_release_ptr-.q_atomic_fetch_and_add_release_ptr - .short 34 - .byte "q_atomic_fetch_and_add_release_ptr" - .align 2 - -_section_.text: - .csect .data[RW],3 - .llong _section_.text diff --git a/src/corelib/arch/qatomic_powerpc.h b/src/corelib/arch/qatomic_powerpc.h index 949102748a..f03539dcd5 100644 --- a/src/corelib/arch/qatomic_powerpc.h +++ b/src/corelib/arch/qatomic_powerpc.h @@ -473,139 +473,7 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelease(qptrdiff valueTo #undef _Q_VALUE_REGISTER_OPERAND #else - -extern "C" { - int q_atomic_test_and_set_int(volatile int *ptr, int expectedValue, int newValue); - int q_atomic_test_and_set_acquire_int(volatile int *ptr, int expectedValue, int newValue); - int q_atomic_test_and_set_release_int(volatile int *ptr, int expectedValue, int newValue); - int q_atomic_test_and_set_ptr(volatile void *ptr, void *expectedValue, void *newValue); - int q_atomic_test_and_set_acquire_ptr(volatile void *ptr, void *expectedValue, void *newValue); - int q_atomic_test_and_set_release_ptr(volatile void *ptr, void *expectedValue, void *newValue); - int q_atomic_increment(volatile int *); - int q_atomic_decrement(volatile int *); - int q_atomic_set_int(volatile int *, int); - int q_atomic_fetch_and_store_acquire_int(volatile int *ptr, int newValue); - int q_atomic_fetch_and_store_release_int(volatile int *ptr, int newValue); - void *q_atomic_set_ptr(volatile void *, void *); - int q_atomic_fetch_and_store_acquire_ptr(volatile void *ptr, void *newValue); - int q_atomic_fetch_and_store_release_ptr(volatile void *ptr, void *newValue); - int q_atomic_fetch_and_add_int(volatile int *ptr, int valueToAdd); - int q_atomic_fetch_and_add_acquire_int(volatile int *ptr, int valueToAdd); - int q_atomic_fetch_and_add_release_int(volatile int *ptr, int valueToAdd); - void *q_atomic_fetch_and_add_ptr(volatile void *ptr, qptrdiff valueToAdd); - void *q_atomic_fetch_and_add_acquire_ptr(volatile void *ptr, qptrdiff valueToAdd); - void *q_atomic_fetch_and_add_release_ptr(volatile void *ptr, qptrdiff valueToAdd); -} // 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, valueToAdd * sizeof(T))); -} -template -Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddAcquire(qptrdiff valueToAdd) -{ - return reinterpret_cast(q_atomic_fetch_and_add_acquire_ptr(&_q_value, valueToAdd * sizeof(T))); -} - -template -Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelease(qptrdiff valueToAdd) -{ - return reinterpret_cast(q_atomic_fetch_and_add_release_ptr(&_q_value, valueToAdd * sizeof(T))); -} - +# error "This compiler for PowerPC is not supported" #endif inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue) diff --git a/src/corelib/arch/vxworks/arch.pri b/src/corelib/arch/vxworks/arch.pri deleted file mode 100644 index a7686186b0..0000000000 --- a/src/corelib/arch/vxworks/arch.pri +++ /dev/null @@ -1,6 +0,0 @@ -# -# VxWorks generic -# -*-ppc-* { - SOURCES += qatomic_ppc.s -} diff --git a/src/corelib/arch/vxworks/qatomic_ppc.s b/src/corelib/arch/vxworks/qatomic_ppc.s deleted file mode 100644 index 03971e89e8..0000000000 --- a/src/corelib/arch/vxworks/qatomic_ppc.s +++ /dev/null @@ -1,415 +0,0 @@ - - .align 2 - .globl q_atomic_test_and_set_int - .globl .q_atomic_test_and_set_int -q_atomic_test_and_set_int: -.q_atomic_test_and_set_int: - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_int-.q_atomic_test_and_set_int - .short 25 - .byte "q_atomic_test_and_set_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_acquire_int - .globl .q_atomic_test_and_set_acquire_int -q_atomic_test_and_set_acquire_int: -.q_atomic_test_and_set_acquire_int: - lwarx 6,0,3 - xor. 6,6,4 - bne $+16 - stwcx. 5,0,3 - bne- $-16 - isync - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_acquire_int-.q_atomic_test_and_set_acquire_int - .short 33 - .byte "q_atomic_test_and_set_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_release_int - .globl .q_atomic_test_and_set_release_int -q_atomic_test_and_set_release_int: -.q_atomic_test_and_set_release_int: - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_release_int: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_release_int-.q_atomic_test_and_set_release_int - .short 33 - .byte "q_atomic_test_and_set_release_int" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_ptr - .globl .q_atomic_test_and_set_ptr -q_atomic_test_and_set_ptr: -.q_atomic_test_and_set_ptr: - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_ptr-.q_atomic_test_and_set_ptr - .short 25 - .byte "q_atomic_test_and_set_ptr" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_acquire_ptr - .globl .q_atomic_test_and_set_acquire_ptr -q_atomic_test_and_set_acquire_ptr: -.q_atomic_test_and_set_acquire_ptr: - lwarx 6,0,3 - xor. 6,6,4 - bne $+16 - stwcx. 5,0,3 - bne- $-16 - isync - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_acquire_ptr-.q_atomic_test_and_set_acquire_ptr - .short 25 - .byte "q_atomic_test_and_set_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_test_and_set_release_ptr - .globl .q_atomic_test_and_set_release_ptr -q_atomic_test_and_set_release_ptr: -.q_atomic_test_and_set_release_ptr: - lwarx 6,0,3 - xor. 6,6,4 - bne $+12 - stwcx. 5,0,3 - bne- $-16 - subfic 3,6,0 - adde 3,3,6 - blr -LT..q_atomic_test_and_set_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,3,0 - .long 0 - .long LT..q_atomic_test_and_set_release_ptr-.q_atomic_test_and_set_release_ptr - .short 33 - .byte "q_atomic_test_and_set_release_ptr" - .align 2 - - .align 2 - .globl q_atomic_increment - .globl .q_atomic_increment -q_atomic_increment: -.q_atomic_increment: - lwarx 4,0,3 - addi 4,4,1 - stwcx. 4,0,3 - bne- $-12 - mr 3,4 - blr -LT..q_atomic_increment: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_increment-.q_atomic_increment - .short 18 - .byte "q_atomic_increment" - .align 2 - - .align 2 - .globl q_atomic_decrement - .globl .q_atomic_decrement -q_atomic_decrement: -.q_atomic_decrement: - lwarx 4,0,3 - subi 4,4,1 - stwcx. 4,0,3 - bne- $-12 - mr 3,4 - blr -LT..q_atomic_decrement: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_decrement-.q_atomic_decrement - .short 18 - .byte "q_atomic_decrement" - .align 2 - - .align 2 - .globl q_atomic_set_int - .globl .q_atomic_set_int -q_atomic_set_int: -.q_atomic_set_int: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_set_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_set_int-.q_atomic_set_int - .short 16 - .byte "q_atomic_set_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_acquire_int - .globl .q_atomic_fetch_and_store_acquire_int -q_atomic_fetch_and_store_acquire_int: -.q_atomic_fetch_and_store_acquire_int: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_store_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_acquire_int-.q_atomic_fetch_and_store_acquire_int - .short 16 - .byte "q_atomic_fetch_and_store_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_release_int - .globl .q_atomic_fetch_and_store_release_int -q_atomic_fetch_and_store_release_int: -.q_atomic_fetch_and_store_release_int: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_fetch_and_store_release_int: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_release_int-.q_atomic_fetch_and_store_release_int - .short 16 - .byte "q_atomic_fetch_and_store_release_int" - .align 2 - - .align 2 - .globl q_atomic_set_ptr - .globl .q_atomic_set_ptr -q_atomic_set_ptr: -.q_atomic_set_ptr: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_set_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_set_ptr-.q_atomic_set_ptr - .short 16 - .byte "q_atomic_set_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_acquire_ptr - .globl .q_atomic_fetch_and_store_acquire_ptr -q_atomic_fetch_and_store_acquire_ptr: -.q_atomic_fetch_and_store_acquire_ptr: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_store_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_acquire_ptr-.q_atomic_fetch_and_store_acquire_ptr - .short 16 - .byte "q_atomic_fetch_and_store_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_store_release_ptr - .globl .q_atomic_fetch_and_store_release_ptr -q_atomic_fetch_and_store_release_ptr: -.q_atomic_fetch_and_store_release_ptr: - lwarx 5,0,3 - stwcx. 4,0,3 - bne- $-8 - mr 3,5 - blr -LT..q_atomic_fetch_and_store_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,2,0 - .long 0 - .long LT..q_atomic_fetch_and_store_release_ptr-.q_atomic_fetch_and_store_release_ptr - .short 16 - .byte "q_atomic_fetch_and_store_release_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_int - .globl .q_atomic_fetch_and_add_int -q_atomic_fetch_and_add_int: -.q_atomic_fetch_and_add_int: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_int-.q_atomic_fetch_and_add_int - .short 18 - .byte "q_atomic_fetch_and_add_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_acquire_int - .globl .q_atomic_fetch_and_add_acquire_int -q_atomic_fetch_and_add_acquire_int: -.q_atomic_fetch_and_add_acquire_int: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_add_acquire_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_acquire_int-.q_atomic_fetch_and_add_acquire_int - .short 18 - .byte "q_atomic_fetch_and_add_acquire_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_release_int - .globl .q_atomic_fetch_and_add_release_int -q_atomic_fetch_and_add_release_int: -.q_atomic_fetch_and_add_release_int: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_release_int: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_release_int-.q_atomic_fetch_and_add_release_int - .short 34 - .byte "q_atomic_fetch_and_add_release_int" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_ptr - .globl .q_atomic_fetch_and_add_ptr -q_atomic_fetch_and_add_ptr: -.q_atomic_fetch_and_add_ptr: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_ptr-.q_atomic_fetch_and_add_ptr - .short 26 - .byte "q_atomic_fetch_and_add_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_acquire_ptr - .globl .q_atomic_fetch_and_add_acquire_ptr -q_atomic_fetch_and_add_acquire_ptr: -.q_atomic_fetch_and_add_acquire_ptr: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - isync - mr 3,5 - blr -LT..q_atomic_fetch_and_add_acquire_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_acquire_ptr-.q_atomic_fetch_and_add_acquire_ptr - .short 34 - .byte "q_atomic_fetch_and_add_acquire_ptr" - .align 2 - - .align 2 - .globl q_atomic_fetch_and_add_release_ptr - .globl .q_atomic_fetch_and_add_release_ptr -q_atomic_fetch_and_add_release_ptr: -.q_atomic_fetch_and_add_release_ptr: - lwarx 5,0,3 - add 6,4,5 - stwcx. 6,0,3 - bne- $-12 - mr 3,5 - blr -LT..q_atomic_fetch_and_add_release_ptr: - .long 0 - .byte 0,9,32,64,0,0,1,0 - .long 0 - .long LT..q_atomic_fetch_and_add_release_ptr-.q_atomic_fetch_and_add_release_ptr - .short 34 - .byte "q_atomic_fetch_and_add_release_ptr" - .align 2 - -_section_.text: - .long _section_.text -- cgit v1.2.3