Go to file
Thiago Macieira 2bbd2262b3 Add a set of atomics based on GCC intrinsics
With this implementation, we can have Qt run on any architecture that
GCC supports without having to write specialised code. However, on
some architectures, the code that GCC generates is not optimal: it
uses locking on ARMv5 and it's always fully-ordered. For that reason,
it appears after the Qt native assembly implementations (it's a
fallback, not an override).

Since they all have fully-ordered memory semantics, we define only the
xxxRelaxed functions. The exception is __sync_lock_and_test, which has
acquire semantics, so we need to define the Release and Ordered
versions too.

On some architectures, GCC can support atomics on types different than
32-bit and pointer-sized (like x86, x86-64, ARM and even
MIPS). However, there's no standardised way of telling: GCC seems to
define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4,8} if those operations
are present, but I couldn't find it on the ARM compiler (it was there
for i386, x86-64, IA-64 and MIPS).

Change-Id: I55ff7a7c0cfc6388b7ad8e2c0dedecffdf2a3e01
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-01-28 16:54:05 +01:00
bin Put the generated <module>version.h into build tree 2012-01-28 14:44:48 +01:00
config.tests QRegularExpression: configure support for PCRE 2012-01-26 23:10:52 +01:00
dist Make coordinates float based where it makes sense. 2012-01-25 02:23:25 +01:00
doc/src Remove support for the MNG file format and the bundled libmng 2012-01-25 02:22:18 +01:00
examples Remove use of QT_MODULE from library 2012-01-25 10:19:44 +01:00
lib Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
mkspecs update readme to current reality 2012-01-27 13:55:27 +01:00
qmake "cache" is used only locally, so move it into scope 2012-01-27 10:54:48 +01:00
src Add a set of atomics based on GCC intrinsics 2012-01-28 16:54:05 +01:00
tests QUrl: deprecate setEncodedUrl() and fromEncoded(), add url(). 2012-01-28 13:08:50 +01:00
tools Add concurrent to QT_CONFIG also on Windows 2012-01-27 13:56:27 +01:00
util Remove Symbian / S60 code from util. 2012-01-24 01:09:22 +01:00
.gitattributes Added .tag file with Git revision. 2011-05-03 16:23:49 +02:00
.gitignore Remove references to openvgversion.h 2012-01-14 14:48:16 +01:00
.tag Added .tag file with Git revision. 2011-05-03 16:23:49 +02:00
configure QRegularExpression: configure support for PCRE 2012-01-26 23:10:52 +01:00
configure.exe Add a new QT_NO_SSL feature macro. 2012-01-06 11:19:23 +01:00
header.BSD Update contact information in license headers. 2012-01-23 04:04:33 +01:00
header.FDL Update contact information in license headers. 2012-01-23 04:04:33 +01:00
header.LGPL Update contact information in license headers. 2012-01-23 04:04:33 +01:00
header.LGPL-ONLY Update obsolete contact address. 2012-01-23 04:04:33 +01:00
INSTALL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LGPL_EXCEPTION.txt Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.FDL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.LGPL Update contact information in license headers. 2012-01-23 04:04:33 +01:00
LICENSE.PREVIEW.COMMERCIAL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
qtbase.pro Remove support for the MNG file format and the bundled libmng 2012-01-25 02:22:18 +01:00
sync.profile Remove references to openvgversion.h 2012-01-14 14:48:16 +01:00