Andrey Semashev
76b78f2491
#9985 . Added ebx saves and restores in asm blocks to avoid frame pointer clobbering, when frame pointer omission is disabled.
2014-05-17 21:58:59 +04:00
Andrey Semashev
00c21f9978
Documented new feature test and configuration macros. Fixed disabled gcc atomic backend.
2014-05-17 19:20:51 +04:00
Andrey Semashev
08d30a2320
Added missing include.
2014-05-11 23:14:47 +04:00
Andrey Semashev
890313b8d7
Added missing include.
2014-05-11 23:13:58 +04:00
Andrey Semashev
3a81a36bbe
Removed no longer used files.
2014-05-11 20:28:12 +04:00
Andrey Semashev
5c032ccf3a
Added gcc Alpha backend. Completely untested.
2014-05-11 20:21:41 +04:00
Andrey Semashev
5cb6e92ed0
Extracted common c86 DCAS code to a separate header.
2014-05-11 17:33:09 +04:00
Andrey Semashev
c319c6efd1
Enabled gcc atomic backend for Intel Compiler on Linux.
2014-05-11 17:00:00 +04:00
Andrey Semashev
c196e6da0c
Fixed compilation of ARM backend. Simplified fences implementation.
2014-05-11 14:18:49 +04:00
Andrey Semashev
684917a6fe
Implemented gcc ARM backend. Some files renamed.
2014-05-11 02:36:15 +04:00
Andrey Semashev
4e9632a669
Implemented gcc SPARCv9 backend.
...
The backend also adds support for 64-bit atomics.
2014-05-09 22:24:37 +04:00
Andrey Semashev
f53911de3d
Implemented PorwerPC backend.
2014-05-09 20:57:02 +04:00
Andrey Semashev
d3af1bace9
Fixed compilation.
2014-05-09 19:04:41 +04:00
Andrey Semashev
4cb51c6b76
Signed flag is now forwarded to the backends.
...
Forwarding the "signed" property allows to specialize operations
implementation, which may be desired for some architectures. This also
eliminates the formally implementation-defined result of unsigned-to-
target type.
Also for x86 implementations removed compiler barriers since the
compilers already treat intrinsics/asm blocks as ones.
2014-05-09 18:53:06 +04:00
Andrey Semashev
652e87b7e7
Added Linux ARM backend.
2014-05-07 22:21:04 +04:00
Andrey Semashev
20dd8bd827
Implemented MSVC and Windows backends.
2014-05-04 23:41:16 +04:00
Andrey Semashev
931a5dc2aa
Improved assertion messages.
2014-05-04 05:22:59 +04:00
Andrey Semashev
17cf91d8c9
Working on the library rewrite. Implemented gcc-x86 and gcc-sync
...
backends.
2014-05-04 00:14:24 +04:00
Andrey Semashev
0e5b641e0a
Added workarounds for clang.
2014-04-20 19:03:56 +04:00
Andrey Semashev
625c3c3a2e
Compilation fixes. Added public headers for atomic_flag and atomic.
2014-04-20 17:26:42 +04:00
Andrey Semashev
f3d59ec1c1
Working on the new library design.
...
Added implementation of atomic ops with gcc __atomic intrinsics.
Implemented the unified atomic interface. Extracted atomic_flag to a
separate header. atomic_flag now follows standard requirements for
static initialization, if possible.
2014-04-19 22:25:02 +04:00
Andrey Semashev
928bdea4f6
Merge branch 'develop' into decouple_interface_impl_rewrite
2014-03-23 16:07:37 +04:00
Andrey Semashev
e3536bec75
Hopefully, fixes #9447 .
...
Cleanup of the success flag in CAS operations has been reworked. The
flag is automatically cleared by default and only set when the operation
succeeds. Also minor code reformatting and __volatile__ specifications
to prohibit the assembler code moving around.
2014-03-23 15:15:56 +04:00
Andrey Semashev
c56a76c084
Further attempts to work around clang bugs.
2014-03-19 19:07:30 +04:00
Andrey Semashev
8a3e5b1466
Further attempts to work around clang compilation failures.
2014-03-18 21:25:33 +04:00
Andrey Semashev
9e15e02528
Attempt to make Darwin clang compile the asm statement.
2014-03-17 19:36:39 +04:00
Andrey Semashev
522279d1e7
Added missing fence functions for the clang 3.4 workaround. Also made atomic_flag copy and assignment to be deleted on C++11 compilers.
2014-03-16 21:19:42 +04:00
Andrey Semashev
b277b46c5f
Removed incorrect constexpr qualifications from constructors with non-empty bodies.
2014-03-15 16:25:10 +04:00
Andrey Semashev
bf1898e2e6
Added 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.
2014-03-15 16:11:03 +04:00
Andrey Semashev
e4bde20f2e
More compilation fixes for the case when 128-bit integers are not supported.
2014-02-28 12:43:11 +04:00
Andrey Semashev
7b13e9cd24
Reworked 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.
2014-02-09 16:12:00 +04:00
Andrey Semashev
4efb93ba4d
Ranamed header.
2014-02-09 13:38:52 +04:00
Andrey Semashev
28f0c4c408
Merge branch 'develop' into decouple_interface_impl_rewrite
2014-01-27 01:03:31 +04:00
Andrey Semashev
173eb4a64f
Fixed compilation with MSVC.
2014-01-26 21:24:34 +04:00
Andrey Semashev
7d768ca2e1
Extracted all capability macros to separate headers.
2014-01-26 19:39:38 +04:00
Andrey Semashev
6f6614717e
Added experimental support for ARM architecture on Windows. Completely untested.
2014-01-26 17:05:54 +04:00
Andrey Semashev
6bb71fdd8f
Fixed incorrect initialization of 128-bit values, when no native support for 128-bit integers is available.
2014-01-26 13:58:48 +04:00
Agustín Bergé
1ee6311ea4
Silence GCC -Wcast-qual warning
...
Use C++ casts instead of C-style casts in order to silence warning about casting away qualifiers.
warning: cast from type 'volatile bool*' to type 'bool*' casts away qualifiers [-Wcast-qual]
2014-01-13 12:31:22 -06:00
Andrey Semashev
9ded906200
The lock pool mutexes are now statically initialized. Fixes #9466 .
2013-12-14 19:44:23 +04:00
Tim Blechmann
6ef10a2d40
atomic: fix compilation and make use of gcc's cas-based implementation
2013-12-07 10:48:24 +01:00
Andrey Semashev
94359f6aea
Reverted commit 86144, which was misapplied and not required. The support for 64-bit atomic ops on 32-bit x86 was already present before.
...
[SVN r86320]
2013-10-15 11:08:22 +00:00
Tim Blechmann
9606e3f321
atomic: 64bit cas support for 32bit windows
...
fixes #9193
[SVN r86144]
2013-10-03 09:17:42 +00:00
Stephen Kelly
21fc47f109
Atomic: Remove obsolete MSVC version check.
...
[SVN r85910]
2013-09-25 21:11:49 +00:00
Andrey Semashev
799b822bab
Fixed 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.
...
[SVN r85793]
2013-09-19 20:04:47 +00:00
Andrey Semashev
dd3267bc43
Added macro checks for more ARM targets. The macros were taken from smart_ptr/detail/spinlock_gcc_arm.hpp.
...
[SVN r85586]
2013-09-06 17:37:29 +00:00
Andrey Semashev
a629bd6308
Corrected macro name.
...
[SVN r85578]
2013-09-05 18:28:42 +00:00
Andrey Semashev
b8cd09c50b
Switched 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.
...
[SVN r85531]
2013-08-31 11:21:50 +00:00
Andrey Semashev
2dc386ae88
Added missing includes and std:: qualification for ptrdiff_t.
...
[SVN r85090]
2013-07-20 17:46:48 +00:00
Tim Blechmann
ffae0dc7a0
atomic: qnx/qcc compile fix
...
[SVN r85015]
2013-07-12 17:49:20 +00:00
Andrey Semashev
2327494330
Mentioned Intel compiler version in the comment.
...
[SVN r84857]
2013-06-21 08:29:19 +00:00