1 2017-01-31 Ivan Maidanski <ivmai@mail.ru>
3 * src/atomic_ops/sysdeps/standard_ao_double_t.h [__i386__ && __GNUC__]
4 (double_ptr_storage): Add aligned(8) attribute (so that AO_double_t
5 global/static variables to have proper (double-word) alignment).
7 2017-01-26 Ivan Maidanski <ivmai@mail.ru>
9 * src/atomic_ops.h (AO_TS_INITIALIZER): Change type from AO_t to
10 AO_TS_t; add outermost parentheses.
12 2017-01-24 Ivan Maidanski <ivmai@mail.ru>
14 * doc/README.txt (AO_double_t): Add note about required alignment.
15 * src/atomic_ops/sysdeps/standard_ao_double_t.h (AO_double_t): Add
16 comment about alignment.
17 * src/atomic_ops_stack.h (AO_stack_t): Likewise.
18 * tests/test_atomic.template (test_atomicXX): Define w
19 local variable as static (as otherwise, e.g., it could have 4-byte
20 alignment on x86); add comment.
21 * tests/test_atomic_include.h: Regenerate.
23 2017-01-16 Ivan Maidanski <ivmai@mail.ru>
25 * src/atomic_ops/sysdeps/msftc/arm.h: Remove FIXME about memory barrier
26 of _InterlockedOps (they have the correct one according to the MSDN).
28 2012-10-08 Ivan Maidanski <ivmai@mail.ru>
30 * src/Makefile.msft (libatomic_ops_gpl.lib): Do not pass
31 "/MACHINE:i386" option to "lib" tool (to select the proper target
32 architecture automatically).
34 2011-08-09 Ivan Maidanski <ivmai@mail.ru>
36 * src/Makefile.msft: Replace -o option with /Fo.
37 * src/Makefile.msft (clean): New target.
39 2011-08-09 Ivan Maidanski <ivmai@mail.ru>
41 * src/Makefile.msft (all): Build "libatomic_ops_gpl.lib" instead of
43 * src/Makefile.msft (test_malloc): Wrap long lines.
45 2016-11-02 Ivan Maidanski <ivmai@mail.ru>
47 * doc/README.txt: Document AO_REQUIRE_CAS better (replace
48 "compare-and-swap" with "AO_compare_and_swap*").
50 2016-08-24 Ivan Maidanski <ivmai@mail.ru>
52 * tests/test_atomic.template (test_atomicXX): Replace assert()
53 calls with TA_assert().
54 * test_atomic_include.h: Regenerate.
56 2016-08-22 Ivan Maidanski <ivmai@mail.ru>
58 * src/atomic_ops_malloc.c: Include limits.h (unless SIZE_MAX already
60 * src/atomic_ops_malloc.c (AO_SIZE_MAX): New macro.
61 * src/atomic_ops_malloc.c (SIZET_SAT_ADD): New macro.
62 * src/atomic_ops_malloc.c (AO_malloc_large): Use SIZET_SAT_ADD to
63 avoid integer overflow when computing the memory size to map (i.e.,
64 malloc should handle arguments close to SIZE_MAX correctly).
66 2016-10-05 Ivan Maidanski <ivmai@mail.ru>
68 * src/atomic_ops.h [_HPUX_SOURCE && !__ia64] (AO_barrier_dummy):
69 Fix typo ("do not") in comment.
70 * src/atomic_ops/generalize.h [AO_HAVE_nop_acquire]: Fix typo
71 ("do not") in #error message.
72 * src/atomic_ops/generalize.h [AO_HAVE_nop_release]: Likewise.
73 * src/atomic_ops/sysdeps/armcc/arm_v6.h [__TARGET_ARCH_ARM < 6]:
75 * src/atomic_ops/sysdeps/armcc/arm_v6.h [__TARGET_ARCH_ARM < 6]: Add
77 * src/atomic_ops_stack.c [AO_HAVE_compare_and_swap_double]: Fix typo
78 ("does not") in #error message.
82 2016-05-23 Ivan Maidanski <ivmai@mail.ru>
84 * README: Bump version to 7.2g (rev. G).
86 2016-05-23 Hans Boehm <boehm@acm.org>
88 * README: Add top-level disclaimer that it is better to use
89 C11 or C++14 atomic primitives instead of this library for the
92 2014-02-21 Ivan Maidanski <ivmai@mail.ru>
94 * README: Update links to BDWGC/libatomic_ops site.
95 * doc/README_stack.txt: Likewise.
97 2016-03-24 Ivan Maidanski <ivmai@mail.ru>
99 * doc/README.txt (Future directions): Remove (obsolete information
100 about C++0x standard future).
102 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
104 * Makefile.in: Regenerate properly (remove ltmain.sh from DIST_COMMON).
106 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
108 * Makefile.in: Regenerate (by autoreconf -vif using autoconf-2.69,
109 automake-1.14.1 and libtool-2.4.2).
110 * config.guess: Likewise.
111 * config.sub: Likewise.
113 2015-01-08 James Cowgill <james410@cowgill.org.uk>
115 * src/atomic_ops/sysdeps/gcc/mips.h: Remove inclusion of
116 acquire_release_volatile.h (the ISA manuals do not say anything about
117 volatile loads / stores having acquire / release semantics).
121 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
123 * README: Bump version to 7.2f (rev. F).
125 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
127 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
128 automake-1.14.1 and libtool-2.4.2.418).
130 * Makefile.in: Likewise.
131 * aclocal.m4: Likewise.
132 * config.guess: Likewise.
133 * config.sub: Likewise.
134 * doc/Makefile.in: Likewise.
136 * src/Makefile.in: Likewise.
137 * src/atomic_ops/Makefile.in: Likewise.
138 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
139 * src/config.h.in: Likewise.
140 * test-driver: Likewise.
141 * tests/Makefile.in: Likewise.
143 2014-03-28 Jan-Erik Rediger <badboy@archlinux.us>
145 * doc/README.txt: Remove redundant "an" article (fix typo).
149 2013-11-10 Ivan Maidanski <ivmai@mail.ru>
151 * README: Bump version to 7.2e (rev. E).
153 2013-08-31 Ivan Maidanski <ivmai@mail.ru>
155 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
156 automake-1.13.4 and libtool-2.4.2).
158 * Makefile.in: Likewise.
159 * aclocal.m4: Likewise.
161 * config.guess: Likewise.
162 * config.sub: Likewise.
164 * doc/Makefile.in: Likewise.
165 * install-sh: Likewise.
167 * mkinstalldirs: Likewise.
168 * src/Makefile.in: Likewise.
169 * src/atomic_ops/Makefile.in: Likewise.
170 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
171 * tests/Makefile.in: Likewise.
172 * test-driver: New generated file.
174 2013-08-18 Ivan Maidanski <ivmai@mail.ru>
176 * aclocal.m4: Regenerate (by autoreconf -vif).
178 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
180 * src/atomic_ops/sysdeps/gcc/arm.h
181 (AO_compare_double_and_swap_double): Do not define for
182 pre-Clang3.3 (since the latter does not allocate register pairs for
183 LDREXD/STREXD instructions properly); add comment.
185 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
187 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_double_and_swap_double):
188 Swap assembly code operands ("new_val" and "addr") to prevent
189 Clang3.3 warning about operand truncation.
191 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
193 * src/atomic_ops/sysdeps/gcc/arm.h
194 (AO_compare_double_and_swap_double): Specify that LDREXD and STREXD use
195 2 adjacent registers (thus preventing Clang3.3 from register allocation
196 failures leading to "registers may not be the same" or
197 "even register required" GAS errors).
199 2013-07-30 Ivan Maidanski <ivmai@mail.ru>
201 * src/atomic_ops/generalize.h: Fix a typo in comment
204 2013-04-03 Manuel Serrano <Manuel.Serrano@inria.fr>
206 * configure.ac (AM_CONFIG_HEADER): Replace obsolete macro with with
207 AC_CONFIG_HEADERS one.
209 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
211 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
212 Do not use AO_EXPECT_FALSE (since defined only in v7.3+).
213 * src/atomic_ops/generalize-small.h: Regenerate.
215 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
217 * src/atomic_ops/sysdeps/sunc/x86.h (AO_fetch_and_add_full,
218 AO_char_fetch_and_add_full, AO_short_fetch_and_add_full, AO_or_full,
219 AO_test_and_set_full,
220 AO_compare_and_swap_full): Use "+m" asm constraint for *addr instead
221 of "=m" (because the value pointed by addr is read and written by the
224 2013-03-13 Ivan Maidanski <ivmai@mail.ru>
226 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Use "+m"
227 asm constraint for *addr instead of "=m" (because the value pointed by
228 addr is read and written by the code).
230 2013-03-12 Ivan Maidanski <ivmai@mail.ru>
232 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap): Use "+m"
233 asm constraint for *addr instead of "+R" (the letter is unsupported
234 by clang3.1 resulting in "invalid output constraint in asm" error).
236 2013-02-14 Ivan Maidanski <ivmai@mail.ru>
238 * src/atomic_ops/sysdeps/gcc/arm.h: Do not include read_ordered.h
239 (because load_acquire should contain a DMB instruction in a multi-core
240 case, new load_acquire/read primitives implementation is generalized
241 using nop_full/read which either contain a DMB instruction, or is just
242 a compiler barrier for uniprocessor).
243 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Likewise.
244 * src/atomic_ops/sysdeps/msftc/arm.h: Likewise.
246 2013-01-15 Ivan Maidanski <ivmai@mail.ru>
248 * doc/README.txt (_acquire_read): Add information about memory
249 barrier (similar as in atomic_ops.h).
250 * doc/README.txt (_release_read): Remove information about
251 non-existing barrier.
253 2013-01-14 Ivan Maidanski <ivmai@mail.ru>
255 * src/atomic_ops/sysdeps/ao_t_is_int.h: Fix a typo in comment.
257 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
259 * src/atomic_ops/sysdeps/ao_t_is_int.h
260 (AO_int_load_acquire, AO_int_fetch_and_add_full,
261 AO_int_fetch_and_add1_acquire, AO_int_fetch_and_add1_release,
262 AO_int_fetch_and_sub1_acquire, AO_int_fetch_and_sub1_release): Cast
263 result to unsigned int instead of signed int.
265 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
267 * src/atomic_ops/sysdeps/gcc/s390.h: Move include of
268 ordered_except_wr.h down to be after all_aligned_atomic_load_store.h
269 inclusion (since the latter defines AO_X_load/store primitives used by
272 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
274 * src/atomic_ops/sysdeps/msftc/arm.h: Fix a typo in comment (about
277 2013-01-07 Ivan Maidanski <ivmai@mail.ru>
279 * src/atomic_ops/sysdeps/read_ordered.h (AO_char_load_read,
280 AO_short_load_read, AO_int_load_read): Change return type (and the
281 type of "result" local variable) from AO_t to the type matching the
282 name of the function (i.e., unsigned char/short/int, respectively).
284 2013-01-06 Ivan Maidanski <ivmai@mail.ru>
286 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Insert
287 AO_compiler_barrier for AO_UNIPROCESSOR case.
288 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Likewise.
289 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Likewise.
290 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Refine comment.
292 2013-01-05 Ivan Maidanski <ivmai@mail.ru>
294 * src/atomic_ops/Makefile.in: Regenerate (by autoreconf -vif).
296 2013-01-04 Ivan Maidanski <ivmai@mail.ru>
298 * src/atomic_ops/Makefile.am (BUILT_SOURCES): Define to force
299 regeneration of generalize-small.h (if the corresponding
300 source template is changed) before compilation of .c files (that use
303 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
305 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
306 Add missed definition based on CAS.
307 * src/atomic_ops/generalize-small.h: Regenerate.
309 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
311 * src/atomic_ops/generalize-small.template (AO_XSIZE_load): Move
312 definition (which is based on AO_XSIZE_load_acquire) down to be after
313 AO_XSIZE_load_acquire definition.
314 * src/atomic_ops/generalize-small.template (AO_XSIZE_store): Move
315 definition (which is based on AO_XSIZE_store_release) down to be after
316 AO_XSIZE_store_release definition.
317 * src/atomic_ops/generalize-small.h : Regenerate.
319 2012-10-09 Ivan Maidanski <ivmai@mail.ru>
321 * tests/test_stack.c (run_one_test): Change type of "index" local
322 variable from long to int to match printf format specifier (when
323 VERBOSE defined); cast from "arg" pointer to integer via size_t (to
324 avoid 64-bit compiler warning).
326 2012-10-08 Ivan Maidanski <ivmai@mail.ru>
328 * src/atomic_ops/sysdeps/gcc/x86.h (AO_double_compare_and_swap_full):
329 New function (only if __x86_64__) implemented using GCC built-in
330 __sync CAS primitive available for x32.
331 * src/atomic_ops/sysdeps/gcc/x86.h
332 (AO_HAVE_double_compare_and_swap_full): New macro (for x32 only).
333 * src/atomic_ops/sysdeps/gcc/x86.h
334 (AO_compare_double_and_swap_double_full): Implement using
335 double_compare_and_swap_full instead of cmpxchg8b for x32 (since
336 x86_64 has cmpxchg and cmpxchg16b but not cmpxchg8b).
338 2012-10-05 Ivan Maidanski <ivmai@mail.ru>
340 * src/atomic_ops.h: Fix typos in comments (update generalize.h
343 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
345 * src/atomic_ops.c (AO_pause): Fix millis value (passed to Win32
346 Sleep) for the case of 'n' argument in range between 12 and 21,
347 inclusive if AO_USE_WIN32_PTHREADS (sleep for 1 ms in this case).
348 * src/atomic_ops_stack.c (AO_pause): Evaluate 'msecs' value using the
349 same algorithm as in atomic_ops.c (Win32 only).
351 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
353 * src/atomic_ops_stack.c (dummy): Define as static (to make symbol
354 without AO_ prefix visible only within this file); initialize to 1
355 (same as in atomic_ops.c, so that AO_spin would never really alter
358 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
360 * src/atomic_ops.h: Fix 'load' primitive name in comment (replace
361 AO_load_release_read with AO_load_acquire_read).
363 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
365 * src/atomic_ops/sysdeps/emul_cas.h
366 (AO_compare_double_and_swap_double_full): Test (define if)
367 AO_HAVE_compare_double_and_swap_double_full macro instead of
368 AO_HAVE_compare_double_and_swap_double.
370 2012-10-01 Ivan Maidanski <ivmai@mail.ru>
372 * src/atomic_ops/sysdeps/standard_ao_double_t.h (double_ptr_storage):
373 Define as "unsigned long long" instead of __m128 for gcc/x32 (i.e.,
374 ILP32 on x86_64); update and reformat comment.
376 2012-09-19 Ivan Maidanski <ivmai@mail.ru>
378 * configure: Regenerate (by autoreconf -vif using autoconf-2.68,
379 automake-1.11.3 and libtool-2.4.2).
381 * Makefile.in: Likewise.
382 * aclocal.m4: Likewise.
384 * config.guess: Likewise.
385 * config.sub: Likewise.
387 * doc/Makefile.in: Likewise.
388 * install-sh: Likewise.
390 * src/Makefile.in: Likewise.
391 * src/atomic_ops/Makefile.in: Likewise.
392 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
393 * tests/Makefile.in: Likewise.
395 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
397 * src/atomic_ops.h: Include gcc/x86.h instead of gcc/x86_64.h if
398 gcc/x32 (i.e., GCC (or Intel compiler), __x86_64__ is defined, and
399 __ILP32__ is defined) to have AO_compare_double_and_swap_double_full
400 defined properly (based on cmpxchg8b); explicitly define
401 AO_USE_PENTIUM4_INSTRS for gcc/x32.
402 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove ILP32-specific code
403 (AO_T_IS_INT definition).
405 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
407 * src/atomic_ops/sysdeps/sunc/x86_64.h
408 (AO_compare_double_and_swap_double_full): Fix inline assembly
409 arguments commenting out "m"(*addr) one (similar to that in
410 sunc/x86.h) if AO_CMPXCHG16B_AVAILABLE defined.
412 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
414 * src/atomic_ops/sysdeps/gcc/x86_64.h
415 (AO_compare_double_and_swap_double_full): Fix a typo in comment.
416 * src/atomic_ops/sysdeps/sunc/x86_64.h
417 (AO_compare_double_and_swap_double_full): Likewise.
419 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
421 * tests/test_atomic.c (acqrel_thr): Call abort() after fprintf(stderr).
422 * tests/test_malloc.c (run_one_test): Likewise.
423 * tests/test_stack.c (check_list, main): Likewise.
425 2012-09-05 Ivan Maidanski <ivmai@mail.ru>
427 * src/atomic_ops/sysdeps/gcc/x86.h
428 (AO_compare_double_and_swap_double_full): Re-implement for PIC mode
429 saving EBX to a local variable (instead of pushing it to stack) and
430 saving memory operand address to a register (edi which is manually
431 preserved), so that the whole code could also work even if EBX points
432 to memory operand (e.g., in Clang); test __PIC__ using ifdef (instead
433 of "if"); update comments; reformat code.
437 2012-08-09 Ivan Maidanski <ivmai@mail.ru>
439 * README: Change version to 7.2d (rev. D).
441 2012-08-01 Ivan Maidanski <ivmai@mail.ru>
443 * src/atomic_ops.h (AO_compiler_barrier): Add parentheses and cast to
446 2012-07-12 Ivan Maidanski <ivmai@mail.ru>
448 * config.guess: Regenerate (by autoreconf -vif using autoconf-2.68,
449 automake-1.11.1 and libtool-2.4).
450 * config.sub: Likewise.
452 2012-07-04 Ivan Maidanski <ivmai@mail.ru>
454 * src/atomic_ops/sysdeps/gcc/x86.h
455 (AO_compare_double_and_swap_double_full): Use EDI register for
456 "new_val1" argument in PIC mode only for GCC 4.3+ to workaround
457 a problem with older compiler versions (e.g., GCC 4.2.1 [FreeBSD])
458 that do not recognize 'D' as a valid register specification; update
461 2012-07-01 Ivan Maidanski <ivmai@mail.ru>
463 * src/atomic_ops/generalize-small.template
464 (AO_XSIZE_fetch_and_add_full,
465 AO_XSIZE_fetch_and_add_acquire, AO_XSIZE_fetch_and_add_release):
466 Fix type of function result by adding
467 'unsigned' to XCTYPE.
468 * src/atomic_ops/generalize-small.h: Regenerate.
472 2012-05-11 Ivan Maidanski <ivmai@mail.ru>
474 * configure.ac, README: Bump version to 7.2 (final).
475 * configure: Regenerate.
477 2012-05-01 H.J. Lu <hjl.tools@gmail.com>
479 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_fetch_and_add_full,
480 AO_and_full, AO_or_full, AO_xor_full, AO_compare_and_swap_full):
481 Remove 'q' suffix in asm instruction.
483 2012-04-16 H.J. Lu <hjl.tools@gmail.com>
485 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_T_IS_INT): Defined
488 2012-03-28 Ivan Maidanski <ivmai@mail.ru>
490 * configure.ac (PICFLAG): Adjust AC_MSG_CHECKING message; report
491 "none" result if no -fPIC is needed (for Cygwin/MinGW); determine
492 whether GCC -fPIC option causes __PIC__ macro definition; pass
493 -D __PIC__ to PICFLAG (instead of CFLAGS) only if not defined
494 automatically in case -fPIC specified; update comment.
496 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
498 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Do not use __m128
499 if GCC pre-v4 (at least, xmmintrin.h is missing in gcc-3.4.3-x86_64
500 included in Solaris 10 distribution).
502 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
504 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Fix a typo in
507 2012-03-19 Ivan Maidanski <ivmai@mail.ru>
509 * configure: Regenerate.
510 * Makefile.in: Likewise.
512 2011-08-14 Petter Urkedal <paurkedal@gmail.com>
514 * atomic_ops.pc.in -> pkgconfig/atomic_ops.pc.in: Moved.
515 * pkgconfig/atomic_ops-uninstalled.pc.in: Added developer version.
516 * configure.ac, Makefile.am: Update accordingly.
518 2011-08-04 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
520 * atomic_ops.pc.in: new file.
521 * Makefile.am (pkgconfigdir, pkgconfig_DATA): new items.
522 * configure.ac (AC_CONFIG_FILES): add atomic_ops.pc.
523 * configure, Makefile.in: Regenerate.
525 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
527 * src/atomic_ops/sysdeps/gcc/x86.h
528 (AO_compare_double_and_swap_double_full): Use EDI register for
529 "new_val1" argument instead of a memory operand and use XCHG assembler
530 instruction instead of push/pop in case of PIC mode (to workaround
531 a bug in GCC 4.6.1); update the comment.
533 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
535 * src/atomic_ops_stack.c (AO_stack_push_release): Make "cptr" local
536 variable volatile to workaround a bug in clang-1.1/x86 compiler; add
539 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
541 * src/atomic_ops/sysdeps/gcc/x86.h
542 (AO_compare_double_and_swap_double_full): Fix argument name in the
544 * src/atomic_ops/sysdeps/sunc/x86.h
545 (AO_compare_double_and_swap_double_full): Likewise.
547 2012-03-04 Ivan Maidanski <ivmai@mail.ru>
549 * src/atomic_ops_malloc.h (AO_malloc_enable_mmap): Fix a typo in the
552 2012-01-19 Ivan Maidanski <ivmai@mail.ru>
554 * tests/test_atomic.c (main): Put "void" keyword into the arguments
555 specification of the function prototype.
556 * tests/test_stack.c (main): Likewise.
558 2011-12-16 Ivan Maidanski <ivmai@mail.ru>
560 * src/atomic_ops/sysdeps/gcc/arm.h (__ARM_ARCH_7__, __ARM_ARCH_7A__):
561 Recognize to override __ARM_ARCH_5xx__ macros (since Android NDK GCC
562 defines both for armv7); update comment.
564 2011-11-29 Ivan Maidanski <ivmai@mail.ru>
566 * src/atomic_ops/sysdeps/gcc/hexagon.h: Include generalize.h file
567 before ao_t_is_int.h one.
568 * src/atomic_ops/sysdeps/gcc/ia64.h: Likewise.
569 * src/atomic_ops/sysdeps/hpc/ia64.h: Likewise.
571 2011-11-03 Ivan Maidanski <ivmai@mail.ru>
573 * src/atomic_ops/generalize-small.template
574 (AO_XSIZE_fetch_and_add_full, AO_XSIZE_fetch_and_add_acquire,
575 AO_XSIZE_fetch_and_add_release): Change return type from AO_t to
577 * src/atomic_ops/generalize-small.h: Regenerate.
579 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
581 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap_full):
582 Change "result" local variable type from AO_t to int.
583 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_compare_and_swap_full):
586 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
588 * tests/test_atomic_include.h: Regenerate.
590 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
592 * tests/test_atomic_include.template (test_atomicXX): Add action for
593 the missing AO_compare_and_swap primitive.
595 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
597 * src/atomic_ops.c (init_lock): Define only unless AO_USE_NO_SIGNALS.
599 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
601 * doc/README.txt: Fix a typo.
603 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
605 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Cast
606 returned value to int.
608 2011-10-17 Ivan Maidanski <ivmai@mail.ru>
610 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
612 2011-10-17 Ivan Maidanski <ivmai@mail.ru> (really Thorsten Glaser)
614 * src/atomic_ops/sysdeps/gcc/m68k.h (AO_test_and_set_full): Cast the
617 2011-10-15 Ivan Maidanski <ivmai@mail.ru>
619 * src/atomic_ops/sysdeps/gcc/s390.h (AO_compare_and_swap_full):
620 Change return from AO_t to int.
621 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_compare_and_swap_acquire,
622 AO_compare_and_swap_release, AO_compare_and_swap_full): Likewise.
624 2011-10-11 Ivan Maidanski <ivmai@mail.ru> (really Linas Vepstas)
626 * src/atomic_ops/sysdeps/Makefile.am (nobase_private_HEADERS): Add
628 * src/atomic_ops.h: Include hexagon.h file.
629 * src/atomic_ops/sysdeps/gcc/hexagon.h: New file.
631 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
634 (AO_non_posix_implementation_is_entirely_in_headers): Make external.
636 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
638 * configure: Regenerate.
639 * tests/Makefile.in: Ditto.
640 * tests/test_atomic_include.h: Ditto.
642 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
644 * configure.ac (PICFLAG, THREADDLLIBS): Define as empty for MinGW.
645 * configure.ac (have_pthreads): New definition (set to true unless
647 * configure.ac (HAVE_PTHREAD_H): New AM conditional (based on
648 have_pthreads value).
649 * tests/Makefile.am (test_atomic_pthreads_SOURCES,
650 test_atomic_pthreads_CPPFLAGS, test_atomic_pthreads_LDADD): Define
651 only if HAVE_PTHREAD_H.
652 * tests/Makefile.am (TESTS): Don't include test_atomic_pthreads unless
654 * tests/Makefile.am (check_PROGRAMS): Define to TESTS value.
656 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
658 * configure.ac (PICFLAG): Set to -fPIC if GCC but not Gygwin.
660 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
662 * tests/test_malloc.c (LIST_LENGTH, LARGE_OBJ_SIZE): Define to
663 a smaller value unless HAVE_MMAP.
665 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
667 * tests/test_malloc.c (cons, run_one_test): Call exit with a non-zero
668 code (instead of abort) if out of memory.
669 * tests/test_stack.c (add_elements): Likewise.
670 * tests/test_stack.c (main): Use a distinct exit code if a thread
673 2011-09-15 Ivan Maidanski <ivmai@mail.ru>
675 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo (replace AO_FORCE_CAS
676 with AO_REQUIRE_CAS in a comment).
678 2011-09-08 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
680 * src/Makefile.am, tests/Makefile.am: Set compiler include paths
681 to $(top_builddir)/src and $(top_srcdir)/src.
682 * src/Makefile.in: Regenerate.
683 * tests/Makefile.in: Ditto.
685 2011-07-14 Ivan Maidanski <ivmai@mail.ru>
687 * tests/list_atomic.template (list_atomicXX): Remove "addr" local
688 variable (use "&val" instead); initialize "newval" and "oldval"
689 local variables; rename "tsaddr" local variable to "ts" one.
690 * tests/list_atomic.template (list_atomicXX): Fix
691 AO_test_and_setXX call (pass address instead of value).
692 * tests/list_atomic.template: Expand all tabs to spaces; remove
693 trailing spaces at EOLn.
694 * tests/run_parallel.inc: Ditto.
695 * tests/test_atomic.c: Ditto.
696 * tests/list_atomic.c: Regenerate.
697 * tests/run_parallel.inc (AO_PTRDIFF_T): New macro.
698 * tests/run_parallel.inc (tramp): Cast between pointer and integer
699 types via casting to AO_PTRDIFF_T.
700 * tests/test_atomic.c (add1sub1_thr, acqrel_thr): Ditto.
701 * tests/run_parallel.inc (run_parallel): Adjust printf format
702 specifiers for DWORD parameters.
703 * tests/test_stack.c: Skip test if no pthreads.
705 2011-06-27 Ivan Maidanski <ivmai@mail.ru> (really Jeremy Huddleston)
707 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
708 Explicitly cast 0xff to unsigned char (otherwise LLVM v2.7 GAS
709 reports an error); don't recognize AO_XCHGB_RET_WORD.
710 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
713 2011-06-15 Ivan Maidanski <ivmai@mail.ru>
715 * configure.ac, README: Change to version 7.2alpha7.
716 * configure: Regenerate.
720 2011-06-14 Ivan Maidanski <ivmai@mail.ru>
722 * configure.ac, README: Change to version 7.2alpha6.
723 * configure: Regenerate.
725 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
727 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_load): Do not
728 define for pre-ARMv6 directly (revert part of the previous
730 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set,
731 AO_test_and_set_full): Refine the comment.
732 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Define
733 SWP-based implementation at the end of file (if none of
734 AO_test_and_set functions are defined previously).
735 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Remove
736 SWP-based implementation (revert part of the previous commit).
737 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store): Remove redundant
738 definition at the file end (revert part of the previous commit).
740 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
742 * src/atomic_ops/sysdeps/gcc/arm.h: Handle ARMv6M architecture.
743 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Force "swp"
744 instruction usage (instead of ldrex/strex) if AO_FORCE_USE_SWP;
746 * src/atomic_ops/sysdeps/gcc/arm.h
747 (AO_compare_double_and_swap_double): Handle ARMv7EM architecture
749 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set, AO_nop_full,
750 AO_load, AO_store): Define at the end of file (in case not defined
753 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
755 * src/atomic_ops/generalize.h: Reformat code.
756 * src/atomic_ops/generalize.h (AO_test_and_set_acquire): Fix
758 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_test_and_set): Ditto.
759 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Ditto.
760 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Add
761 a comment (about SWP instruction).
763 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
765 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
766 AO_THUMB_RESTORE_MODE): Use single-digit labels (to workaround
767 a bug in GCC v4.2.1 which reports "garbage following instruction"
769 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Use "IT"
770 instruction only for Thumb-2 mode.
772 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
774 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
775 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define as empty
777 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
778 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
779 AO_compare_and_swap, AO_compare_double_and_swap_double): Remove
780 unnecessary "memory" keyword from the list of clobbered registers
781 (revert part of the previous commit).
782 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Add
783 a comment for "IT" instruction.
784 * src/atomic_ops/sysdeps/gcc/arm.h
785 (AO_compare_double_and_swap_double): Don't define on the
786 architectures where unimplemented; add a comment; replace return
787 (in the loop) statement with break.
789 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
791 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
792 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define new
793 macro (to switch temporarily CPU mode to ARM in inline assembler
794 if compiling in the Thumb mode and to restore it back on leave).
795 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_store,
796 AO_test_and_set, AO_fetch_and_add, AO_fetch_and_add1,
797 AO_fetch_and_sub1, AO_compare_and_swap, AO_test_and_set_full):
798 Enable compilation in the Thumb mode (use AO_THUMB_GO_ARM,
799 AO_THUMB_RESTORE_MODE and AO_THUMB_SWITCH_CLOBBERS macros).
800 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
801 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
802 AO_compare_and_swap, AO_compare_double_and_swap_double): Add
803 "memory" to the list of clobbered registers.
805 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
807 * src/atomic_ops/sysdeps/gcc/arm.h: Reformat code.
808 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
809 AO_test_and_set_full): Add assembler comment containing the
812 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
814 * tests/test_malloc.c (run_one_test): Test AO_malloc() result
815 (if out of memory then print the message and abort).
816 * tests/test_stack.c (add_elements): Ditto.
818 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
820 * src/atomic_ops/generalize.h (AO_HAVE_or_full): Add missing
822 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_HAVE_nop_write):
824 * src/atomic_ops/sysdeps/read_ordered.h (AO_HAVE_nop_read): Ditto.
825 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_store_release):
828 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
830 * src/atomic_ops/generalize-small.template
831 (AO_HAVE_XSIZE_fetch_and_add_full): Add missing definition.
832 * src/atomic_ops/generalize-small.template: Reformat code.
833 * src/atomic_ops/generalize-small.h: Regenerate.
835 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
837 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Remove
838 blank line between AO_func and AO_HAVE_func definitions.
839 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
840 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
841 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
842 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
843 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
844 * src/atomic_ops/sysdeps/ordered.h: Ditto.
845 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
846 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
847 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
848 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
849 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
850 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
851 * src/atomic_ops/sysdeps/gcc/cris.h: Ditto.
852 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
853 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
854 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
855 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
856 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
857 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
858 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
859 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
860 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
861 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
862 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
863 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
864 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
865 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
866 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
867 * src/atomic_ops/sysdeps/sunc/sparc.h: Ditto.
868 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
869 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
870 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Reformat
872 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
873 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
874 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
875 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
876 * src/atomic_ops/sysdeps/ordered.h: Ditto.
877 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
878 * src/atomic_ops/sysdeps/test_and_set_t_is_char.h: Remove file
880 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Don't
882 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire,
883 AO_test_and_set, AO_compare_and_swap): Merge adjacent definitions.
884 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_store_release):
886 * src/atomic_ops/sysdeps/sunc/sparc.h: Expand all tabs to spaces;
887 remove trailing spaces at EOLn.
889 2011-06-02 Ivan Maidanski <ivmai@mail.ru>
891 * tests/test_malloc.c (main): Remove unused "exper_n" local
893 * tests/test_stack.c (run_one_test): Remove unused "aux" local
896 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
898 * src/atomic_ops/sysdeps/gcc/arm.h
899 (AO_compare_double_and_swap_double,
900 AO_HAVE_compare_double_and_swap_double): Define only starting from
902 * src/atomic_ops/sysdeps/gcc/arm.h
903 (AO_compare_double_and_swap_double): Fix function name in
904 assembler code; replace while (1) loop with "do-while".
906 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
908 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full):
909 Specify "%b0" (instead of "%0") in "xchg" instruction (to
910 workaround a bug in Sun C 5.11).
911 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
914 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
916 * src/atomic_ops_malloc.c (AO_malloc_enable_mmap): Workaround for
917 Sun C compiler (call "release" variant of AO_store).
919 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
921 * configure.ac (_PTHREADS): New template (used for NetBSD).
922 * configure.ac (THREADDLLIBS): New macro.
923 * tests/Makefile.am (test_atomic_LDADD, test_stack_LDADD,
924 test_atomic_pthreads_LDADD, test_malloc_LDADD): Use THREADDLLIBS
925 instead of "-lpthread".
926 * configure: Regenerate.
927 * Makefile.in: Ditto.
928 * doc/Makefile.in: Ditto.
929 * src/Makefile.in: Ditto.
930 * src/atomic_ops/Makefile.in: Ditto.
931 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
932 * src/config.h.in: Ditto.
933 * tests/Makefile.in: Ditto.
935 2011-05-30 Ivan Maidanski <ivmai@mail.ru>
937 * configure.ac (PIC): Add workaround for GCC v3.4.6 which does not
938 define the corresponding macro.
939 * configure.ac: Don't check for GCC twice.
940 * configure: Regenerate.
941 * tests/test_malloc.c (DEFAULT_NTHREADS): New macro.
942 * tests/test_malloc.c (run_one_test): Refine printed message (in
944 * tests/test_malloc.c (main): Use DEFAULT_NTHREADS.
945 * tests/test_stack.c (main): Cast AO_stack_pop() returned pointer.
946 * src/atomic_ops_malloc.c (USE_MMAP_ANON, GC_MMAP_FLAGS,
947 OPT_MAP_ANON): New macro.
948 * src/atomic_ops_malloc.c (get_mmaped): Pass -1 (instead of 0) as
949 file descriptor to mmap() if MAP_ANONYMOUS (same as for MAP_ANON).
950 * src/atomic_ops_malloc.c (get_mmaped): Use USE_MMAP_ANON,
951 GC_MMAP_FLAGS and OPT_MAP_ANON macros; reformat code; check open()
954 2011-05-11 Ivan Maidanski <ivmai@mail.ru>
956 * tests/test_malloc.c: Expand all tabs to spaces; remove trailing
958 * tests/test_malloc.c (LENGTH, LARGE): Rename to LIST_LENGTH and
959 LARGE_OBJ_SIZE, respectively.
960 * tests/test_malloc.c (MAX_NTHREADS, N_REVERSALS, LIST_LENGTH,
961 LARGE_OBJ_SIZE): Do not define unless undefined.
962 * tests/test_malloc.c (run_one_test): Recognize DEBUG_RUN_ONE_TEST
965 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
967 * tests/Makefile.am (EXTRA_DIST): Add list_atomic.c; update
969 * tests/Makefile.am (CLEANFILES): Remove test_atomic_include.h,
971 * tests/Makefile.am: Remove trailing spaces at EOLn.
972 * tests/Makefile.in: Regenerate.
974 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
976 * tests/test_stack.c (MAX_NTHREADS, N_EXPERIMENTS): Do not define
978 * tests/test_stack.c: Expand all tabs to spaces.
979 * tests/test_atomic_include.h: Ditto.
980 * tests/test_stack.c (main): Free pop'ed elements.
981 * tests/test_atomic_include.h (test_atomic, test_atomic_release,
982 test_atomic_acquire, test_atomic_read, test_atomic_write,
983 test_atomic_full, test_atomic_release_write,
984 test_atomic_acquire_read): Remove prototype.
986 2011-04-22 Ivan Maidanski <ivmai@mail.ru>
988 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_MASK): Add "volatile" for
989 asm; remove redundant trailing ';'.
991 2011-04-11 Ivan Maidanski <ivmai@mail.ru> (really Jim Meyering)
993 * doc/README.txt: Remove doubled words in comments.
995 2011-03-18 Ivan Maidanski <ivmai@mail.ru>
997 * src/atomic_ops/sysdeps/gcc/arm.h: Test for all the known pre-v6
998 ARM chips instead of all the currently existing v6+ ones.
1000 2011-03-13 Ivan Maidanski <ivmai@mail.ru>
1002 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo in a comment;
1003 expand all tabs to spaces.
1004 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
1005 Recognize AO_XCHGB_RET_WORD new macro (to workaround a bug).
1006 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
1009 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
1011 * src/atomic_ops.c: Include sys/time.h (to get timespec) for NaCl.
1012 * src/atomic_ops_malloc.c (msb): Do the shift by 32 only once (in
1013 a conditional expression) to prevent a compiler warning.
1014 * src/atomic_ops_malloc.c: Expand all tabs to spaces; remove
1015 trailing spaces at EOLn.
1017 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
1019 * src/atomic_ops.c: Explicitly define AO_USE_NO_SIGNALS and
1020 AO_USE_NANOSLEEP for NaCl.
1022 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
1024 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
1025 automake-1.11.1 and libtool-2.4).
1028 2011-02-09 Ivan Maidanski <ivmai@mail.ru>
1030 * src/atomic_ops.c (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): New
1032 * src/atomic_ops.c (AO_USE_WIN32_PTHREADS): Imply
1034 * src/atomic_ops.c: Don't include signal.h if AO_USE_NO_SIGNALS.
1035 * src/atomic_ops.c: Include time.h if AO_USE_NANOSLEEP.
1036 * src/atomic_ops.c (AO_locks, AO_pause): Reformat the code.
1037 * src/atomic_ops.c (AO_pause): Use nanosleep() if
1039 * src/atomic_ops.c (all_sigs, initialized,
1040 AO_compare_and_swap_emulation,
1041 AO_compare_double_and_swap_double_emulation): Use
1042 AO_USE_NO_SIGNALS instead of AO_USE_WIN32_PTHREADS.
1044 2011-01-07 Ivan Maidanski <ivmai@mail.ru>
1046 * src/.cvsignore: Add more auto-generated files.
1047 * tests/.cvsignore: Ditto.
1048 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full, AO_store,
1049 AO_compare_double_and_swap_double): Reformat code.
1050 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
1051 AO_compare_double_and_swap_double): Ditto.
1052 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
1053 Produce "it eq" instruction only for Thumb mode.
1054 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
1056 2010-11-23 Ivan Maidanski <ivmai@mail.ru> (really Michael Hope)
1058 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
1059 Insert "it eq" just before "strexeq" (required for Thumb-2 mode,
1060 ignored in ARM mode).
1061 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
1063 2010-09-15 Ivan Maidanski <ivmai@mail.ru> (with input from Gregory Farnum)
1065 * src/atomic_ops.h: Include armcc/arm_v6.h if __ARMCC__.
1066 * src/atomic_ops.h: Include ibmc/powerpc.h if __IBMC__.
1067 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if msftc/arm.h is
1069 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if AO_CAN_EMUL_CAS
1070 is defined but emul_cas.h has not been included.
1071 * src/atomic_ops/sysdeps/gcc/arm.h: Fix a typo.
1073 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
1075 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
1076 automake-1.11.1 and libtool-2.2.8).
1079 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
1081 * src/atomic_ops/sysdeps/gcc/arm.h: Replace C++ style comment
1084 2010-05-30 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
1086 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Use
1087 "register long" (instead of "int") for "ret" variable.
1088 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Replace
1089 with AO_test_and_set_full (same for AO_HAVE_test_and_set).
1090 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_compare_and_swap_full):
1091 New function implemented.
1093 2010-05-22 Ivan Maidanski <ivmai@mail.ru>
1095 * src/atomic_ops/sysdeps/Makefile.am (nobase_sysdep_HEADERS):
1097 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1099 2010-05-21 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
1101 * src/atomic_ops.h: Recognize __avr32__ (include gcc/avr32.h).
1102 * src/atomic_ops/sysdeps/gcc/avr32.h: New file.
1104 2010-04-29 Ivan Maidanski <ivmai@mail.ru>
1106 * doc/README_malloc.txt: Fix a typo.
1107 * doc/README_stack.txt: Ditto.
1109 2010-02-25 Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
1111 * .cvsignore: New file.
1112 * doc/.cvsignore: Ditto.
1113 * src/.cvsignore: Ditto.
1114 * src/atomic_ops/.cvsignore: Ditto.
1115 * src/atomic_ops/sysdeps/.cvsignore: Ditto.
1116 * tests/.cvsignore: Ditto.
1118 2010-02-19 Ivan Maidanski <ivmai@mail.ru> (mostly really Patrick Marlier)
1120 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full):
1121 Use __sync_bool_compare_and_swap() if AO_USE_SYNC_CAS_BUILTIN.
1122 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1124 * src/atomic_ops.h (AO_USE_SYNC_CAS_BUILTIN): New macro defined
1125 if GCC v4.2+ or Intel compiler v11.1+ (only for amd64).
1126 * src/atomic_ops.h: Include GCC-specific sysdeps files for Intel
1127 compiler in GCC compatible mode (only for x86 and amd64).
1129 2010-02-18 Ivan Maidanski <ivmai@mail.ru>
1131 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Don't check
1132 for AO_USE_PENTIUM4_INSTRS (since "mfence" (SSE2) is supported on
1133 all x86_64/amd64 chips); remove the comment.
1134 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1135 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Define only
1136 if AO_ASM_X64_AVAILABLE.
1137 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1138 Use built-in __sync_bool_compare_and_swap() if GCC v4.2+.
1140 2010-02-17 Ivan Maidanski <ivmai@mail.ru> (really Patrick Marlier)
1142 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full,
1143 AO_compare_double_and_swap_double_full): Use EAX for the result
1144 since cmpxchg clobbers it.
1145 * src/atomic_ops/sysdeps/sunc/x86.h (AO_compare_and_swap_full,
1146 AO_compare_double_and_swap_double_full): Ditto.
1147 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full,
1148 AO_compare_double_and_swap_double_full): Ditto.
1149 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_compare_and_swap_full,
1150 AO_compare_double_and_swap_double_full): Ditto.
1152 2010-02-04 Ivan Maidanski <ivmai@mail.ru>
1154 * doc/Makefile.in: Regenerate.
1156 2010-02-04 Ivan Maidanski <ivmai@mail.ru> (really Ian Wienand)
1158 * doc/Makefile.am: Remove duplicate file in the list.
1160 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1162 * ChangeLog: Fix some typos.
1164 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1166 * src/atomic_ops_stack.c (AO_stack_push_explicit_aux_release):
1167 Define "i" variable only if used (to suppress a compiler warning).
1169 2010-02-02 Ivan Maidanski <ivmai@mail.ru>
1171 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full): Fix
1172 "xchg" data size (remove "l" suffix).
1173 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
1175 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full): Use
1177 * src/atomic_ops/sysdeps/sunc/x86.h
1178 (AO_compare_double_and_swap_double_full,
1179 AO_HAVE_compare_double_and_swap_double_full): Comment out (since
1180 not tested, might be wrong, and tickles a bug in some Sun CC
1181 versions; besides, __PIC__ macro is never predefined by Sun CC).
1183 2010-01-29 Ivan Maidanski <ivmai@mail.ru>
1185 * INSTALL: Regenerate (by autoreconf -vif using libtool-2.2.6b,
1186 automake-1.11.1, autoconf-2.65).
1187 * Makefile.in: Ditto.
1188 * aclocal.m4: Ditto.
1190 * config.guess: Ditto.
1191 * config.sub: Ditto.
1194 * install-sh: Ditto.
1196 * mkinstalldirs: Ditto.
1197 * doc/Makefile.in: Ditto.
1198 * src/Makefile.in: Ditto.
1199 * src/atomic_ops/Makefile.in: Ditto.
1200 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1201 * src/config.h.in: Ditto.
1202 * tests/Makefile.in: Ditto.
1204 2009-12-19 Ivan Maidanski <ivmai@mail.ru>
1206 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_lwsync): Redirect to
1207 AO_sync() if __NO_LWSYNC__ (same as for gcc/powerpc.h).
1209 2009-12-17 Ivan Maidanski <ivmai@mail.ru> (really Emmanuel Stapf)
1211 * src/atomic_ops.h: Recognize _M_X64 (as an alias for _AMD64_).
1213 2009-12-04 Ivan Maidanski <ivmai@mail.ru>
1215 * configure.ac, README: Change to version 7.2alpha5.
1216 * configure: Regenerate.
1220 2009-12-02 Ivan Maidanski <ivmai@mail.ru>
1222 * configure.ac, README: Change to version 7.2alpha4.
1223 * configure: Regenerate.
1225 2009-12-01 Ivan Maidanski <ivmai@mail.ru>
1227 * configure.ac, README: Change to version 1.3alpha1.
1228 * configure: Regenerate.
1230 2009-11-21 Ivan Maidanski <ivmai@mail.ru> (really Daniel R. Grayson)
1232 * configure.ac (AC_CONFIG_COMMANDS): Quote PICFLAG, CC, DEFS
1234 * configure: Regenerate.
1236 2009-10-06 Ivan Maidanski <ivmai@mail.ru>
1238 * src/atomic_ops/sysdeps/gcc/sh.h: Remove commented out AO_TS_SET
1241 2009-10-05 Ivan Maidanski <ivmai@mail.ru>
1243 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1245 2009-10-05 Ivan Maidanski <ivmai@mail.ru> (really Takashi YOSHII)
1247 * src/atomic_ops/sysdeps/gcc/sh.h: New file.
1248 * src/atomic_ops.h: Include gcc/sh.h if __arm__.
1249 * src/atomic_ops/sysdeps/Makefile.am: Add gcc/sh.h entry.
1251 2009-10-02 Ivan Maidanski <ivmai@mail.ru>
1253 * src/atomic_ops/sysdeps/Makefile.am: Add armcc/arm_v6.h,
1254 msftc/arm.h, msftc/common32_defs.h, sunc/x86.h sunc/x86_64.h
1255 entries; order all entries alphabetically.
1256 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1258 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1260 * aclocal.m4: Regenerate (by autoreconf -vif using libtool-2.2,
1261 automake-1.10.2, autoconf-2.64).
1263 * Makefile.in: Ditto.
1264 * aclocal.m4: Ditto.
1265 * config.guess: Ditto.
1266 * config.sub: Ditto.
1269 * install-sh: Ditto.
1271 * mkinstalldirs: Ditto.
1272 * doc/Makefile.in: Ditto.
1273 * src/config.h.in: Ditto.
1274 * src/Makefile.in: Ditto.
1275 * src/atomic_ops/Makefile.in: Ditto.
1276 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1277 * tests/Makefile.in: Ditto.
1279 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1281 * src/atomic_ops/sysdeps/gcc/x86.h: Remove spaces preceding '#'
1282 for the preprocessor directives.
1283 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1285 2009-09-30 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1287 * README: Move notes from the hand-edited part of INSTALL which
1288 was overwritten by Automake recently.
1290 2009-09-26 Ivan Maidanski <ivmai@mail.ru>
1292 * aclocal.m4: Regenerate (by autoreconf -vif).
1293 * config.guess: Ditto.
1294 * config.sub: Ditto.
1297 * Makefile.in: Ditto.
1298 * doc/Makefile.in: Ditto.
1299 * src/config.h.in: Ditto.
1300 * src/Makefile.in: Ditto.
1301 * src/atomic_ops/Makefile.in: Ditto.
1302 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1303 * tests/Makefile.in: Ditto.
1305 2009-09-25 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1307 * configure.ac: Replace AC_PROG_CC with AM_PROG_CC_C_O.
1309 2009-09-16 Ivan Maidanski <ivmai@mail.ru>
1311 * ChangeLog: Remove trailing spaces at EOLn.
1312 * doc/README.txt: Expand all tabs to spaces; remove trailing
1313 spaces at EOLn; remove multiple trailing blank lines.
1314 * src/atomic_ops.c: Ditto.
1315 * src/atomic_ops.h: Ditto.
1316 * src/atomic_ops/generalize-small.h: Ditto.
1317 * src/atomic_ops/generalize.h: Ditto.
1318 * src/atomic_ops/sysdeps/acquire_release_volatile.h: Ditto.
1319 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Ditto.
1320 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Ditto.
1321 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Ditto.
1322 * src/atomic_ops/sysdeps/ao_t_is_int.h: Ditto.
1323 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Ditto.
1324 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
1325 * src/atomic_ops/sysdeps/char_acquire_release_volatile.h: Ditto.
1326 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
1327 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
1328 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
1329 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
1330 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
1331 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
1332 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
1333 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
1334 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
1335 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
1336 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
1337 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
1338 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
1339 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
1340 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
1341 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
1342 * src/atomic_ops/sysdeps/icc/ia64.h: Ditto.
1343 * src/atomic_ops/sysdeps/int_acquire_release_volatile.h: Ditto.
1344 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
1345 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
1346 * src/atomic_ops/sysdeps/msftc/arm.h: Ditto.
1347 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
1348 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
1349 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1350 * src/atomic_ops/sysdeps/ordered.h: Ditto.
1351 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
1352 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
1353 * src/atomic_ops/sysdeps/short_acquire_release_volatile.h: Ditto.
1354 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
1355 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
1356 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Ditto.
1357 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1358 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1359 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h: Ditto.
1360 * src/atomic_ops_stack.c: Ditto.
1361 * src/atomic_ops_stack.h: Ditto.
1362 * src/atomic_ops/sysdeps/gcc/arm.h: Replace non-ASCII quotes in a
1364 * src/atomic_ops/sysdeps/gcc/mips.h: Use Unix-style EOLn.
1366 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1369 * src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
1370 (regarding memory barrier).
1371 * src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
1372 AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
1373 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
1374 AO_test_and_set): Replace FIXME with the comment saying it is
1375 emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
1376 * src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
1377 using InterlockedCompareExchange() (assuming the latter has a full
1379 * src/atomic_ops/sysdeps/msftc/arm.h: Include
1380 all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
1381 of pre-ARMv6; add the comment.
1383 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1386 * src/atomic_ops/sysdeps/armcc/arm_v6.h
1387 (AO_compare_double_and_swap_double): Replace false/true with 0/1.
1388 * src/atomic_ops/sysdeps/gcc/arm.h
1389 (AO_compare_double_and_swap_double): Ditto.
1390 * src/atomic_ops/sysdeps/gcc/arm.h: Recognize more ARMv6+
1391 predefined macros (6J, 6ZK, 7A, 7M, 7R).
1392 * src/atomic_ops/sysdeps/gcc/arm.h
1393 (AO_compare_double_and_swap_double): Add "cc" clobber to asm.
1394 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_load_acquire):
1395 Correct the name (convert from the lower case).
1396 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_load_acquire):
1398 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_test_and_set,
1399 AO_compare_and_swap): Comment out unimplemented code (and the
1400 corresponding macros); add FIXME.
1401 * src/atomic_ops.c: Recognize AO_USE_WIN32_PTHREADS overriding
1402 _MSC_VER and __MINGW32__ predefined macros (useful for WinCE with
1403 pthreads-w32 library); don't include signal.h, sys/time.h,
1404 sys/select.h in this case; include windows.h instead.
1405 * src/atomic_ops.c (AO_pause): Use Sleep() in case of
1406 AO_USE_WIN32_PTHREADS (instead of select()).
1407 * src/atomic_ops.c (all_sigs, initialized): Don't define in case
1408 of AO_USE_WIN32_PTHREADS.
1409 * src/atomic_ops.c (AO_compare_and_swap_emulation,
1410 AO_compare_double_and_swap_double_emulation): Don't deal with
1411 signals in case of AO_USE_WIN32_PTHREADS.
1413 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1416 * src/atomic_ops/sysdeps/msftc/arm.h: New file (initial support
1418 * src/atomic_ops/sysdeps/msftc/common32_defs.h: New file.
1419 * src/atomic_ops/sysdeps/msftc/arm.h (AO_ASSUME_ARM_ARCH6): New
1421 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1422 (AO_USE_INTERLOCKED_INTRINSICS): Ditto.
1423 * src/atomic_ops/sysdeps/msftc/x86.h: Move "Interlocked"
1424 declarations to common32_defs.h.
1425 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1426 (AO_INTERLOCKED_VOLATILE): New macro defined (used by
1427 Interlocked-based primitives) for compatibility with older VC++.
1428 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Don't include
1429 missing <intrin.h> if WinCE target.
1430 * src/atomic_ops/sysdeps/msftc/x86.h: Include common32_defs.h
1431 (define AO_USE_INTERLOCKED_INTRINSICS unconditionally).
1432 * src/atomic_ops/sysdeps/msftc/x86.h (AO_fetch_and_add_full,
1433 AO_fetch_and_add1_full, AO_fetch_and_sub1_full,
1434 AO_compare_and_swap_full): Move arch-independent primitives to
1436 * src/atomic_ops/sysdeps/msftc/x86.h: Remove comment about i486 or
1437 better CPU (since Interlocked Add and Xchg primitives are available
1439 * src/atomic_ops.h: Include msftc/x86.h even if _M_IX86 is less than
1441 * src/atomic_ops.h: Include msftc/x86.h if "x86" defined (for WinCE
1443 * src/atomic_ops.h: Include msftc/arm.h if ARM target (for WinCE).
1445 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1448 * src/atomic_ops/sysdeps/msftc/x86.h: Fix comments (prefix
1449 ASSUME_WINDOWS98 with "AO_").
1450 * src/atomic_ops/sysdeps/msftc/x86.h: Prefix ASSUME_VISTA macro with
1452 * src/atomic_ops/sysdeps/msftc/x86.h (AO_nop_full): Replace
1453 K&R-style function definition with ANSI C one.
1454 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full):
1455 Replace AO_TS_SET with its value 0xff (some compilers does not like
1456 C enum consts inside inline assembler).
1457 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full): Add
1458 comment about "missing return value" warning.
1459 * src/atomic_ops/sysdeps/msftc/x86.h
1460 (AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE): New macro.
1461 * src/atomic_ops/sysdeps/msftc/x86.h (AO_compare_and_swap_full): Use
1462 _InterlockedCompareExchange() with args and result of PVOID type
1463 if AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE is defined (mostly for
1464 DigitalMars compiler support).
1465 * src/atomic_ops/sysdeps/msftc/x86.h
1466 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1467 variables ("val1" is the lowest part of AO_double_t).
1468 * src/atomic_ops/sysdeps/msftc/x86.h
1469 (AO_compare_double_and_swap_double_full): Rename to
1470 AO_double_compare_and_swap_full (as it has 3 args).
1471 * src/atomic_ops/sysdeps/msftc/x86.h: Replace C++ style comment
1474 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1477 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove comments about i486
1478 and 32-bit WinChips.
1479 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1480 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Replace
1481 K&R-style function definition with ANSI C one.
1482 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1483 * src/atomic_ops/sysdeps/gcc/x86_64.h
1484 (AO_compare_double_and_swap_double_full): Fix comment.
1485 * src/atomic_ops/sysdeps/gcc/x86_64.h
1486 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1487 variables ("val1" is the lowest part of AO_double_t).
1488 * src/atomic_ops/sysdeps/msftc/x86_64.h
1489 (AO_compare_double_and_swap_double_full): Ditto.
1490 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove comment about
1492 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_ASM_X64_AVAILABLE): New
1494 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1495 "test_and_set_t_is_char.h" if AO_ASM_X64_AVAILABLE (same as in
1496 x86_64.h for gcc); remove FIXME (for re-implement test-and-set).
1497 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1498 "standard_ao_double_t.h" (same as in x86_64.h for gcc).
1499 * src/atomic_ops/sysdeps/msftc/x86_64.h: Add comment for include
1500 <intrin.h> assuming at least VC++ v8.
1501 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove _Interlocked
1502 prototypes (since they are always declared in intrin.h).
1503 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Move its
1504 definition below CAS primitive (to textually group all asm-based
1505 primitives together).
1506 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_test_and_set_full):
1507 Implement for AO_ASM_X64_AVAILABLE case.
1508 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove AO_CASDOUBLE_MISSING
1509 macro (replaced with AO_ASM_X64_AVAILABLE).
1510 * src/atomic_ops/sysdeps/msftc/x86_64.h
1511 (AO_compare_double_and_swap_double_full): Add intrinsic-based
1512 implementation for VC++ v9+.
1513 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Include
1514 <xmmintrin.h> (and use "__m128" type) if _WIN64.
1515 * src/atomic_ops/sysdeps/standard_ao_double_t.h
1516 (AO_HAVE_DOUBLE_PTR_STORAGE): Define it always (as
1517 "double_ptr_storage" is defined for all cases).
1519 2009-09-09 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1521 * src/atomic_ops/sysdeps/gcc/sparc.h (NO_SPARC_V9):
1522 Renamed to AO_NO_SPARC_V9.
1524 2009-09-01 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1526 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
1527 AO_TS_VAL_t for "oldval" (for 64-bit support).
1528 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
1529 New function implemented.
1531 2009-08-12 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1532 (diff107_cvs, resembling diff78 and diff88_cvs)
1534 * src/atomic_ops/sysdeps/sunc/x86.h: New file.
1535 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1536 * src/atomic_ops.h (AO_INLINE): Support inlining for DigitalMars,
1538 * src/atomic_ops.h (AO_compiler_barrier): Use intrinsic-based
1539 implementation for VC++ v8+ (include <intrin.h> before it unless
1540 WinCE target); use asm-based barrier implementation for Borland,
1541 DigitalMars and Watcom.
1542 * src/atomic_ops.h: Fix comment (for x86_64).
1543 * src/atomic_ops.h: Include specialized x86.h and x86_64.h arch
1544 headers for Sun C (if not AO_USE_PTHREAD_DEFS).
1545 * src/atomic_ops.h: Include VC-specific arch headers for Borland,
1546 DigitalMars and Watcom (Win32 target only).
1548 2009-05-27 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1549 (diff87_cvs, resembling diff29, diff68, diff78 partly)
1551 * doc/README.txt: Remove outdated info about Windows support.
1552 * src/atomic_ops/generalize.h (AO_nop_full): Replace
1553 K&R-style function definition with ANSI C one.
1554 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Ditto.
1555 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_nop_full, AO_nop_write):
1557 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Ditto.
1558 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_nop_full): Ditto.
1559 * src/atomic_ops/sysdeps/gcc/mips.h (AO_nop_full): Ditto.
1560 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_nop_full, AO_lwsync): Ditto.
1561 * src/atomic_ops/sysdeps/gcc/x86.h (AO_nop_full): Ditto.
1562 * src/atomic_ops/sysdeps/generic_pthread.h (AO_nop_full): Ditto.
1563 * src/atomic_ops/sysdeps/hpc/ia64.h (AO_nop_full): Ditto.
1564 * src/atomic_ops/sysdeps/icc/ia64.h (AO_nop_full): Ditto.
1565 * src/atomic_ops/sysdeps/ordered.h (AO_nop_full): Ditto.
1566 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_nop_write): Ditto.
1567 * src/atomic_ops/sysdeps/read_ordered.h (AO_nop_read): Ditto.
1568 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h (AO_TS_val): Fix
1571 2009-02-24 Hans Boehm <Hans.Boehm@hp.com> (Really primarily Earl Chew)
1573 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add index,
1574 update modifiers to asms, refine clobbers to "cr0", use
1575 cr0 instead of cr7, add explicit AO_fetch_and_add,
1576 add UNTESTED 64 bit support.
1578 2008-11-10 Hans Boehm <Hans.Boehm@hp.com> (Really Joerg Wagner)
1580 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Compute
1581 AO_compare_and_swap value differently, add
1582 AO_compare_double_and_swap_double, some indentation fixes.
1583 * src/atomic_ops/sysdeps/gcc/arm.h: Make gcc asm code more
1584 robust and minimize clobbers, Add AO_compare_double_and_swap_double.
1586 2008-11-06 Hans Boehm <Hans.Boehm@hp.com>
1588 * INSTALL: Add some platform-specific documentation.
1589 * src/Makefile.msft: Fix copyright notice.
1591 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1593 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
1594 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
1595 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
1596 * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
1597 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
1598 * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
1599 * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
1600 * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
1601 * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
1602 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
1603 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
1604 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
1605 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix comments.
1606 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
1607 * src/atomic_ops.c: Fix comments.
1608 * src/atomic_ops.h: Fix comments.
1609 * src/atomic_ops_stack.c: Fix comments.
1610 * src/atomic_ops_stack.h: Fix comments.
1612 2008-10-20 Hans Boehm <Hans.Boehm@hp.com> (really Andrew Agno)
1614 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
1617 2008-08-21 Hans Boehm <Hans.Boehm@hp.com>
1619 * config.guess, config.sub, configure: Regenerate/replace.
1620 Use autoconf 2.61, automake 1.9.6.
1622 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Thiemo Seufer)
1624 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz
1627 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Sebastian Siewior)
1629 * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__.
1631 2008-07-24 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1633 * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h:
1634 Add parentheses around addr arg for various functions.
1636 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1638 * src/atomic_ops/sysdeps/gcc/powerpc.h:
1639 Add const to first parameter of load calls (forgot one).
1641 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1643 * doc/README.txt, src/atomic_ops/generalize.h,
1644 src/atomic_ops/generalize-small.template,
1645 src/atomic_ops/generalize-small.h,
1646 src/atomic_ops/sysdeps/acquire_release_volatile.h,
1647 src/atomic_ops/sysdeps/char_acquire_release_volatile.h,
1648 src/atomic_ops/sysdeps/int_acquire_release_volatile.h,
1649 src/atomic_ops/sysdeps/short_acquire_release_volatile.h,
1650 src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1651 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1652 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
1653 src/atomic_ops/sysdeps/ao_t_is_int.h,
1654 src/atomic_ops/sysdeps/atomic_load_store.h,
1655 src/atomic_ops/sysdeps/char_atomic_load_store.h,
1656 src/atomic_ops/sysdeps/int_atomic_load_store.h,
1657 src/atomic_ops/sysdeps/short_atomic_load_store.h,
1658 src/atomic_ops/sysdeps/generic_pthread.h,
1659 src/atomic_ops/sysdeps/read_ordered.h,
1660 src/atomic_ops/sysdeps/sysdeps/armcc/arm_v6.h,
1661 src/atomic_ops/sysdeps/gcc/arm.h,
1662 src/atomic_ops/sysdeps/icc/ia64.h,
1663 src/atomic_ops/sysdeps/ibmc/powerpc.h:
1664 Add const to first parameter of load calls.
1666 2008-07-10 Hans Boehm <Hans.Boehm@hp.com>
1668 * src/atomic_ops/sysdeps/gcc/m68k.h: Remove SMP-unsafe
1669 AO_or_full, and let it be autogenerated instead.
1671 2008-07-03 Hans Boehm <Hans.Boehm@hp.com> (Really Thiemo Seufer)
1673 * src/atomic_ops/sysdeps/gcc/mips.h: Really add mips support,
1674 fixing a merge accident.
1676 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1679 * doc/Makefile.in, src/Makefile.in, src/atomic_ops/Makefile.in:
1682 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1685 * src/atomic_ops.h, src/atomic_ops/sysdeps/Makefile.am,
1686 src/atomic_ops/sysdeps/gcc/mips.h: Add mips support.
1687 * src/atomic_ops/sysdeps/gcc/m68k.h: Make test_and_set work
1688 on char, align AO_t. Add cas, or.
1689 * src/atomic_ops/sysdeps/gcc/s390.h: Fix include paths.
1690 * src/atomic_ops/generalize.h: Fix AO_compare_and_swap_double_acquire.
1691 * Makefile.in, aclocal.m4, src/atomic_ops/sysdeps/Makefile.in,
1692 tests/Makefile.in: Regenerate.
1694 2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
1695 (Really Ian Wienand & Debian maintainers)
1697 * src/atomic_ops/sysdeps/gcc/x86.h
1698 (AO_compare_double_and_swap_double_full): Correctly account for
1701 2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
1703 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
1704 double_ptr_storage default to long long; define everywhere.
1706 2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1708 * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
1709 compare_double_and_swap_double.
1711 2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1713 * src/atomic_ops/generalize.h: Add test_and_set generalizations,
1714 Add AO_double_compare_and_swap generalizations.
1715 * src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
1716 * src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
1717 * src/atomic_ops/sysdeps/gcc/x86.h,
1718 src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
1719 compare_double_and_swap_double, commented out for msftc.
1720 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
1721 double_ptr_storage field.
1723 2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
1724 (Merge from separate atomic_ops tree)
1726 * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
1727 double-width cas, and fix its implementation.
1728 * doc/README.txt: Clarify use of _full. Add more warnings about
1731 2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
1733 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1734 %X1 modifier to support indexed addressing.
1736 2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
1738 * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
1741 2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
1743 * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
1746 2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
1748 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1751 2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
1753 * src/atomic_ops.h: include stddef.h
1755 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
1757 * src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
1758 * src/atomic_ops.h: Add test for msftc/x86_64.h.
1759 * src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
1760 * src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
1761 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1762 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1763 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1764 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
1765 Replace unsigned long cast with size_t.
1767 2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
1769 * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
1770 Add cast for return.
1772 2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
1774 * doc/README.txt: Update to reflect C++0x effort.
1776 2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
1778 * src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
1780 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
1783 2006-11-09 Earl Chew (Agilent)
1785 * msftc/x86.h: Follow Microsoft documentation and include
1790 2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
1792 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
1794 2006-03-28 Earl Chew (Agilent)
1796 * src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
1797 * src/atomic_ops/sysdeps/msftc/x86.h:
1798 Use new intrinsics available in MSVC 2003 and MSVC 2005.
1799 Use inline assembler to generate mfence and byte sized xchg
1800 Use correct prototype for InterlockedCompareExchange.
1801 * src/atomic_ops.h: Add test for __PPC__ .
1802 * tests/run_parallel.inc: Add simple VxWorks support.
1803 * tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
1804 to silence compiler warnings.
1806 2006-11-13 Hans Boehm <Hans.Boehm@hp.com>
1808 * src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
1809 * src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
1811 2005-11-04 Hans Boehm <Hans.Boehm@hp.com>
1813 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1814 all_acquire_release_volatile.h, instead of just the pointer-sized
1816 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1817 all_acquire_release_volatile.h and all_atomic_load_store.h,
1818 instead of just the pointer-sized versions.
1822 2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
1824 * src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
1825 * src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
1826 ordered_except_wr.h.
1827 * src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
1828 instead of duplicating it.
1829 * src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
1831 2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
1833 * src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
1834 definition with one that might actually work. (Thanks to Kazu
1835 Hirata and Paul Brook.)
1837 2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
1839 * src/atomic_ops/Makefile.am: Change function naming from "byte" to
1844 2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
1845 Fix various acquire_release_volatile.h files to reflect the fact
1846 that both icc and gcc seem to reorder ordinary memory accesses around
1847 volatile accesses early in the compilation. Modify the acquire
1848 release test to catch this problem (with high probability, and only on
1851 2005-03 Hans Boehm <Hans.Boehm@hp.com>
1852 Fixes for recently introduced bugs. Update x86 and x86-64 assembly
1853 syntax to deal with complaints by some recent gcc versions.
1855 2005-02 Hans Boehm <Hans.Boehm@hp.com>
1856 Added libatomic_ops_gpl library with support for mostly
1857 lock-free stack and malloc().
1859 2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
1860 Hans Boehm <Hans.Boehm@hp.com>
1861 Use autoconf, automake, starting with code from Debian package.
1864 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1865 * test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
1866 Change most platforms to use byte-wide test-and-set locations.
1868 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1869 * ao_t_is_int.h: Add to trivially support int-wide operations
1870 on platforms with int-sized pointers.
1872 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1873 * gcc/powerpc.h: First serious attempt to support PowerPC (with
1874 help from Maged Michael and others).
1876 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1877 * sunc/sparc.[hS]: Added minimal support for the Sun SPARC compiler.
1878 * atomic_ops_sysdeps.S: Add support for platforms that require
1879 out-of-line assembly code.
1881 2004-10 Hans Boehm <Hans.Boehm@hp.com>
1882 More work on char, short, int sized data. Add both
1883 compare_double_and_swap_double and compare_and_swap_double.
1884 Typically each platform will provide at most one of these.
1886 2004-07-02 Ranko Zivojnovic
1887 Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
1889 2004-06 Hans Boehm <Hans.Boehm@hp.com>
1890 Start to add atomic_ops primitives for different sized data.
1892 2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
1894 * atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
1895 Fix support for ecc on IA64. Remove compiler_barrier workaround
1896 for gcc 3.4 and later.
1898 2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
1900 * atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
1901 atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
1902 Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
1903 for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
1904 compiler on PA_RISC and IA64.
1906 2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
1908 * many: Install under "atomic_ops" instead of "ao".
1909 Change atomic_ops include file structure. Auxiliary include
1910 files are all under include/atomic_ops.
1911 Fix (hopefully) "make dist" in atomic_ops distribution.
1912 Renamed various types to end in _t, though the old versions
1913 are still defined for backward compatibility.
1915 2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
1917 * ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
1918 AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
1919 helper macros. AO_test_and_set_full uses helper macros.
1922 Started sometime after version 0.4 release. Currently the format is
1923 informal. Eventually should become more GNU-like.