00c2879066Made sure that memory_order_consume is equivalent to memory_order_acquire on SPARC. Also make signal fences more strict in case of memory_order_consume since the standard requires them to be equivalent to thread fences except for thread synchronization instructions.
Andrey Semashev
2014-07-07 21:48:53 +0400
560e3c0465Clarified the requirements on the types compatible with boost::atomic.
Andrey Semashev
2014-06-10 00:21:31 +0400
313497c6aeAdded Windows version specification to fix compilation with MSVC. The code targets for Windows 2000.
Andrey Semashev
2014-06-09 01:18:38 +0400
d4ee3a3047Added a comment about the reason why we promote memory_order_consume to memory_order_acquire.
Andrey Semashev
2014-06-03 23:30:21 +0400
e55bf17309Changed memory_order_consume handling on ARM and PPC.
Andrey Semashev
2014-06-01 20:03:53 +0400
abdce8f1bbChanged memory_order constant values to simplify checks for success/failure orders in compare_exchange methods. Fixed incorrect cas_failure_order_must_not_be_stronger_than_success_order check.
Andrey Semashev
2014-06-01 02:10:44 +0400
a721aa468fRemoved scratch argument for asm block in non-PIC mode.
Andrey Semashev
2014-05-26 23:21:01 +0400
97ae84a474Adjusted the workaround for ldrexd/strexd instruction problem with register pairs allocation. The problem only affects ARMv6k in Thumb mode, so enable these instructions for ARM mode. Also don't base the decision on the compiler version, it is probably not relevant. Updated lockfree test to reflect the recent changes related to ARM backends.
Andrey Semashev
2014-05-23 21:02:07 +0400
deddca6918Fixed a few bugs with ARM assembler: incorrect comparisons in compare_exchange, compilation failures due to insufficient registers in some optimization modes. Eventually I had to disable 64-bit atomic ops for gcc 4.7 because it is not able to allocate register pairs suitable for ldrexd/strexd instructions.
Andrey Semashev
2014-05-22 01:01:46 +0400
a71a23694bFixed typo in a comment.
Andrey Semashev
2014-05-21 00:36:43 +0400
7197b188acAnother attempt to work around the problem with old binutils not supporting dmb arguments. Changed 64-bit operations so that the generated asm does not contain offsets in ldrexd and strexd instructions. Otherwise ARM assembler chokes.
Andrey Semashev
2014-05-21 00:34:10 +0400
b8626e355bMoving memory_order.hpp to Boost.Atomic.
Andrey Semashev
2014-05-20 21:59:22 +0400
7f290018d2Changed the dmb instruction argument in attempt to fix compilation with old binutils on QNX.
Andrey Semashev
2014-05-18 19:03:55 +0400
7fcb3b18b0#9527. Fixed a typo in the docs.
Andrey Semashev
2014-05-17 22:06:27 +0400
76b78f2491#9985. Added ebx saves and restores in asm blocks to avoid frame pointer clobbering, when frame pointer omission is disabled.
Andrey Semashev
2014-05-17 21:58:59 +0400
b80d0ebe36Documented the BOOST_ATOMIC_NO_ATOMIC_FLAG_INIT macro.
Andrey Semashev
2014-05-17 20:07:52 +0400
c56a76c084Further attempts to work around clang bugs.
Andrey Semashev
2014-03-19 19:07:30 +0400
8a3e5b1466Further attempts to work around clang compilation failures.
Andrey Semashev
2014-03-18 21:25:33 +0400
9e15e02528Attempt to make Darwin clang compile the asm statement.
Andrey Semashev
2014-03-17 19:36:39 +0400
522279d1e7Added missing fence functions for the clang 3.4 workaround. Also made atomic_flag copy and assignment to be deleted on C++11 compilers.
Andrey Semashev
2014-03-16 21:19:42 +0400
b277b46c5fRemoved incorrect constexpr qualifications from constructors with non-empty bodies.
Andrey Semashev
2014-03-15 16:25:10 +0400
bf1898e2e6Added a workaround for clang 3.4 bug: the compiler does not implement __atomic intrinsics even though it defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 macro.
Andrey Semashev
2014-03-15 16:11:03 +0400
e4bde20f2eMore compilation fixes for the case when 128-bit integers are not supported.
Andrey Semashev
2014-02-28 12:43:11 +0400
7b13e9cd24Reworked capabilities definition. For all platforms, added BOOST_ATOMIC_INTn_LOCK_FREE macros that define the support for fixed sized integers. Other macros are deduced from the new ones, according to the native type sizes.
Andrey Semashev
2014-02-09 16:12:00 +0400
28f0c4c408Merge branch 'develop' into decouple_interface_impl_rewrite
Andrey Semashev
2014-01-27 01:03:31 +0400
173eb4a64fFixed compilation with MSVC.
Andrey Semashev
2014-01-26 21:24:34 +0400
7d768ca2e1Extracted all capability macros to separate headers.
Andrey Semashev
2014-01-26 19:39:04 +0400
6f6614717eAdded experimental support for ARM architecture on Windows. Completely untested.
Andrey Semashev
2014-01-26 17:05:54 +0400
6bb71fdd8fFixed incorrect initialization of 128-bit values, when no native support for 128-bit integers is available.
Andrey Semashev
2014-01-26 13:58:48 +0400
1fc5d75a98Merged changes from develop.
Andrey Semashev
2014-01-07 15:33:56 +0400
9ded906200The lock pool mutexes are now statically initialized. Fixes#9466.
Andrey Semashev
2013-12-14 19:44:23 +0400
6ef10a2d40atomic: fix compilation and make use of gcc's cas-based implementation
Tim Blechmann
2013-12-07 10:48:24 +0100
94359f6aeaReverted commit 86144, which was misapplied and not required. The support for 64-bit atomic ops on 32-bit x86 was already present before.
Andrey Semashev
2013-10-15 11:08:22 +0000
9606e3f321atomic: 64bit cas support for 32bit windows
Tim Blechmann
2013-10-03 09:17:42 +0000
799b66041dMerged changeset 85793 from trunk.
Andrey Semashev
2013-09-26 21:14:24 +0000
21fc47f109Atomic: Remove obsolete MSVC version check.
Stephen Kelly
2013-09-25 21:11:49 +0000
799b822babFixed duplicate BOOST_ATOMIC_COMPILER_BARRIER macro definition. Extracted linking setup to a separate header so that including interlocked.hpp doesn't require linking with the library.
Andrey Semashev
2013-09-19 20:04:47 +0000
6dc50f685cMerged recent changes from trunk.
Andrey Semashev
2013-09-08 13:55:41 +0000
dd3267bc43Added macro checks for more ARM targets. The macros were taken from smart_ptr/detail/spinlock_gcc_arm.hpp.
Andrey Semashev
2013-09-06 17:37:29 +0000
1bda03c997Attempt to fix tests on MSVC
Andrey Semashev
2013-09-05 17:01:50 +0000
b0886a7a78Attempt to fix linking tests on Windows.
Andrey Semashev
2013-09-04 08:46:22 +0000
b8cd09c50bSwitched to boost::detail::lightweight_mutex instead of boost::mutex from Boost.Thread to avoid false dependencies on Boost.DateTime, Boost.Chrono and Boost.System. This should hopefully resolve linking problems on MinGW.
Andrey Semashev
2013-08-31 11:21:50 +0000
822d7655cfMerged recent changes from trunk.
Andrey Semashev
2013-07-20 18:01:35 +0000
6ab6038e99Added a missing include.
Andrey Semashev
2013-07-20 17:59:19 +0000
2dc386ae88Added missing includes and std:: qualification for ptrdiff_t.
Andrey Semashev
2013-07-20 17:46:48 +0000
ffae0dc7a0atomic: qnx/qcc compile fix
Tim Blechmann
2013-07-12 17:49:20 +0000
2327494330Mentioned Intel compiler version in the comment.
Andrey Semashev
2013-06-21 08:29:19 +0000
55e8b16a12Fixed compilation with gcc 4.4. Optimized code for gcc older than 4.7 and also added support for 128-bit atomic ops. Completed transition to defaulted and deleted functions.
Andrey Semashev
2013-06-16 13:40:11 +0000