1 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
3 * Makefile.in: Regenerate (by autoreconf -vif using autoconf-2.69,
4 automake-1.14.1 and libtool-2.4.2).
5 * config.guess: Likewise.
6 * config.sub: Likewise.
8 2015-01-08 James Cowgill <james410@cowgill.org.uk>
10 * src/atomic_ops/sysdeps/gcc/mips.h: Remove inclusion of
11 acquire_release_volatile.h (the ISA manuals do not say anything about
12 volatile loads / stores having acquire / release semantics).
16 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
18 * README: Bump version to 7.2f (rev. F).
20 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
22 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
23 automake-1.14.1 and libtool-2.4.2.418).
25 * Makefile.in: Likewise.
26 * aclocal.m4: Likewise.
27 * config.guess: Likewise.
28 * config.sub: Likewise.
29 * doc/Makefile.in: Likewise.
31 * src/Makefile.in: Likewise.
32 * src/atomic_ops/Makefile.in: Likewise.
33 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
34 * src/config.h.in: Likewise.
35 * test-driver: Likewise.
36 * tests/Makefile.in: Likewise.
38 2014-03-28 Jan-Erik Rediger <badboy@archlinux.us>
40 * doc/README.txt: Remove redundant "an" article (fix typo).
44 2013-11-10 Ivan Maidanski <ivmai@mail.ru>
46 * README: Bump version to 7.2e (rev. E).
48 2013-08-31 Ivan Maidanski <ivmai@mail.ru>
50 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
51 automake-1.13.4 and libtool-2.4.2).
53 * Makefile.in: Likewise.
54 * aclocal.m4: Likewise.
56 * config.guess: Likewise.
57 * config.sub: Likewise.
59 * doc/Makefile.in: Likewise.
60 * install-sh: Likewise.
62 * mkinstalldirs: Likewise.
63 * src/Makefile.in: Likewise.
64 * src/atomic_ops/Makefile.in: Likewise.
65 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
66 * tests/Makefile.in: Likewise.
67 * test-driver: New generated file.
69 2013-08-18 Ivan Maidanski <ivmai@mail.ru>
71 * aclocal.m4: Regenerate (by autoreconf -vif).
73 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
75 * src/atomic_ops/sysdeps/gcc/arm.h
76 (AO_compare_double_and_swap_double): Do not define for
77 pre-Clang3.3 (since the latter does not allocate register pairs for
78 LDREXD/STREXD instructions properly); add comment.
80 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
82 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_double_and_swap_double):
83 Swap assembly code operands ("new_val" and "addr") to prevent
84 Clang3.3 warning about operand truncation.
86 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
88 * src/atomic_ops/sysdeps/gcc/arm.h
89 (AO_compare_double_and_swap_double): Specify that LDREXD and STREXD use
90 2 adjacent registers (thus preventing Clang3.3 from register allocation
91 failures leading to "registers may not be the same" or
92 "even register required" GAS errors).
94 2013-07-30 Ivan Maidanski <ivmai@mail.ru>
96 * src/atomic_ops/generalize.h: Fix a typo in comment
99 2013-04-03 Manuel Serrano <Manuel.Serrano@inria.fr>
101 * configure.ac (AM_CONFIG_HEADER): Replace obsolete macro with with
102 AC_CONFIG_HEADERS one.
104 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
106 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
107 Do not use AO_EXPECT_FALSE (since defined only in v7.3+).
108 * src/atomic_ops/generalize-small.h: Regenerate.
110 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
112 * src/atomic_ops/sysdeps/sunc/x86.h (AO_fetch_and_add_full,
113 AO_char_fetch_and_add_full, AO_short_fetch_and_add_full, AO_or_full,
114 AO_test_and_set_full,
115 AO_compare_and_swap_full): Use "+m" asm constraint for *addr instead
116 of "=m" (because the value pointed by addr is read and written by the
119 2013-03-13 Ivan Maidanski <ivmai@mail.ru>
121 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Use "+m"
122 asm constraint for *addr instead of "=m" (because the value pointed by
123 addr is read and written by the code).
125 2013-03-12 Ivan Maidanski <ivmai@mail.ru>
127 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap): Use "+m"
128 asm constraint for *addr instead of "+R" (the letter is unsupported
129 by clang3.1 resulting in "invalid output constraint in asm" error).
131 2013-02-14 Ivan Maidanski <ivmai@mail.ru>
133 * src/atomic_ops/sysdeps/gcc/arm.h: Do not include read_ordered.h
134 (because load_acquire should contain a DMB instruction in a multi-core
135 case, new load_acquire/read primitives implementation is generalized
136 using nop_full/read which either contain a DMB instruction, or is just
137 a compiler barrier for uniprocessor).
138 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Likewise.
139 * src/atomic_ops/sysdeps/msftc/arm.h: Likewise.
141 2013-01-15 Ivan Maidanski <ivmai@mail.ru>
143 * doc/README.txt (_acquire_read): Add information about memory
144 barrier (similar as in atomic_ops.h).
145 * doc/README.txt (_release_read): Remove information about
146 non-existing barrier.
148 2013-01-14 Ivan Maidanski <ivmai@mail.ru>
150 * src/atomic_ops/sysdeps/ao_t_is_int.h: Fix a typo in comment.
152 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
154 * src/atomic_ops/sysdeps/ao_t_is_int.h
155 (AO_int_load_acquire, AO_int_fetch_and_add_full,
156 AO_int_fetch_and_add1_acquire, AO_int_fetch_and_add1_release,
157 AO_int_fetch_and_sub1_acquire, AO_int_fetch_and_sub1_release): Cast
158 result to unsigned int instead of signed int.
160 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
162 * src/atomic_ops/sysdeps/gcc/s390.h: Move include of
163 ordered_except_wr.h down to be after all_aligned_atomic_load_store.h
164 inclusion (since the latter defines AO_X_load/store primitives used by
167 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
169 * src/atomic_ops/sysdeps/msftc/arm.h: Fix a typo in comment (about
172 2013-01-07 Ivan Maidanski <ivmai@mail.ru>
174 * src/atomic_ops/sysdeps/read_ordered.h (AO_char_load_read,
175 AO_short_load_read, AO_int_load_read): Change return type (and the
176 type of "result" local variable) from AO_t to the type matching the
177 name of the function (i.e., unsigned char/short/int, respectively).
179 2013-01-06 Ivan Maidanski <ivmai@mail.ru>
181 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Insert
182 AO_compiler_barrier for AO_UNIPROCESSOR case.
183 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Likewise.
184 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Likewise.
185 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Refine comment.
187 2013-01-05 Ivan Maidanski <ivmai@mail.ru>
189 * src/atomic_ops/Makefile.in: Regenerate (by autoreconf -vif).
191 2013-01-04 Ivan Maidanski <ivmai@mail.ru>
193 * src/atomic_ops/Makefile.am (BUILT_SOURCES): Define to force
194 regeneration of generalize-small.h (if the corresponding
195 source template is changed) before compilation of .c files (that use
198 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
200 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
201 Add missed definition based on CAS.
202 * src/atomic_ops/generalize-small.h: Regenerate.
204 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
206 * src/atomic_ops/generalize-small.template (AO_XSIZE_load): Move
207 definition (which is based on AO_XSIZE_load_acquire) down to be after
208 AO_XSIZE_load_acquire definition.
209 * src/atomic_ops/generalize-small.template (AO_XSIZE_store): Move
210 definition (which is based on AO_XSIZE_store_release) down to be after
211 AO_XSIZE_store_release definition.
212 * src/atomic_ops/generalize-small.h : Regenerate.
214 2012-10-09 Ivan Maidanski <ivmai@mail.ru>
216 * tests/test_stack.c (run_one_test): Change type of "index" local
217 variable from long to int to match printf format specifier (when
218 VERBOSE defined); cast from "arg" pointer to integer via size_t (to
219 avoid 64-bit compiler warning).
221 2012-10-08 Ivan Maidanski <ivmai@mail.ru>
223 * src/atomic_ops/sysdeps/gcc/x86.h (AO_double_compare_and_swap_full):
224 New function (only if __x86_64__) implemented using GCC built-in
225 __sync CAS primitive available for x32.
226 * src/atomic_ops/sysdeps/gcc/x86.h
227 (AO_HAVE_double_compare_and_swap_full): New macro (for x32 only).
228 * src/atomic_ops/sysdeps/gcc/x86.h
229 (AO_compare_double_and_swap_double_full): Implement using
230 double_compare_and_swap_full instead of cmpxchg8b for x32 (since
231 x86_64 has cmpxchg and cmpxchg16b but not cmpxchg8b).
233 2012-10-05 Ivan Maidanski <ivmai@mail.ru>
235 * src/atomic_ops.h: Fix typos in comments (update generalize.h
238 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
240 * src/atomic_ops.c (AO_pause): Fix millis value (passed to Win32
241 Sleep) for the case of 'n' argument in range between 12 and 21,
242 inclusive if AO_USE_WIN32_PTHREADS (sleep for 1 ms in this case).
243 * src/atomic_ops_stack.c (AO_pause): Evaluate 'msecs' value using the
244 same algorithm as in atomic_ops.c (Win32 only).
246 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
248 * src/atomic_ops_stack.c (dummy): Define as static (to make symbol
249 without AO_ prefix visible only within this file); initialize to 1
250 (same as in atomic_ops.c, so that AO_spin would never really alter
253 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
255 * src/atomic_ops.h: Fix 'load' primitive name in comment (replace
256 AO_load_release_read with AO_load_acquire_read).
258 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
260 * src/atomic_ops/sysdeps/emul_cas.h
261 (AO_compare_double_and_swap_double_full): Test (define if)
262 AO_HAVE_compare_double_and_swap_double_full macro instead of
263 AO_HAVE_compare_double_and_swap_double.
265 2012-10-01 Ivan Maidanski <ivmai@mail.ru>
267 * src/atomic_ops/sysdeps/standard_ao_double_t.h (double_ptr_storage):
268 Define as "unsigned long long" instead of __m128 for gcc/x32 (i.e.,
269 ILP32 on x86_64); update and reformat comment.
271 2012-09-19 Ivan Maidanski <ivmai@mail.ru>
273 * configure: Regenerate (by autoreconf -vif using autoconf-2.68,
274 automake-1.11.3 and libtool-2.4.2).
276 * Makefile.in: Likewise.
277 * aclocal.m4: Likewise.
279 * config.guess: Likewise.
280 * config.sub: Likewise.
282 * doc/Makefile.in: Likewise.
283 * install-sh: Likewise.
285 * src/Makefile.in: Likewise.
286 * src/atomic_ops/Makefile.in: Likewise.
287 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
288 * tests/Makefile.in: Likewise.
290 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
292 * src/atomic_ops.h: Include gcc/x86.h instead of gcc/x86_64.h if
293 gcc/x32 (i.e., GCC (or Intel compiler), __x86_64__ is defined, and
294 __ILP32__ is defined) to have AO_compare_double_and_swap_double_full
295 defined properly (based on cmpxchg8b); explicitly define
296 AO_USE_PENTIUM4_INSTRS for gcc/x32.
297 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove ILP32-specific code
298 (AO_T_IS_INT definition).
300 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
302 * src/atomic_ops/sysdeps/sunc/x86_64.h
303 (AO_compare_double_and_swap_double_full): Fix inline assembly
304 arguments commenting out "m"(*addr) one (similar to that in
305 sunc/x86.h) if AO_CMPXCHG16B_AVAILABLE defined.
307 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
309 * src/atomic_ops/sysdeps/gcc/x86_64.h
310 (AO_compare_double_and_swap_double_full): Fix a typo in comment.
311 * src/atomic_ops/sysdeps/sunc/x86_64.h
312 (AO_compare_double_and_swap_double_full): Likewise.
314 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
316 * tests/test_atomic.c (acqrel_thr): Call abort() after fprintf(stderr).
317 * tests/test_malloc.c (run_one_test): Likewise.
318 * tests/test_stack.c (check_list, main): Likewise.
320 2012-09-05 Ivan Maidanski <ivmai@mail.ru>
322 * src/atomic_ops/sysdeps/gcc/x86.h
323 (AO_compare_double_and_swap_double_full): Re-implement for PIC mode
324 saving EBX to a local variable (instead of pushing it to stack) and
325 saving memory operand address to a register (edi which is manually
326 preserved), so that the whole code could also work even if EBX points
327 to memory operand (e.g., in Clang); test __PIC__ using ifdef (instead
328 of "if"); update comments; reformat code.
332 2012-08-09 Ivan Maidanski <ivmai@mail.ru>
334 * README: Change version to 7.2d (rev. D).
336 2012-08-01 Ivan Maidanski <ivmai@mail.ru>
338 * src/atomic_ops.h (AO_compiler_barrier): Add parentheses and cast to
341 2012-07-12 Ivan Maidanski <ivmai@mail.ru>
343 * config.guess: Regenerate (by autoreconf -vif using autoconf-2.68,
344 automake-1.11.1 and libtool-2.4).
345 * config.sub: Likewise.
347 2012-07-04 Ivan Maidanski <ivmai@mail.ru>
349 * src/atomic_ops/sysdeps/gcc/x86.h
350 (AO_compare_double_and_swap_double_full): Use EDI register for
351 "new_val1" argument in PIC mode only for GCC 4.3+ to workaround
352 a problem with older compiler versions (e.g., GCC 4.2.1 [FreeBSD])
353 that do not recognize 'D' as a valid register specification; update
356 2012-07-01 Ivan Maidanski <ivmai@mail.ru>
358 * src/atomic_ops/generalize-small.template
359 (AO_XSIZE_fetch_and_add_full,
360 AO_XSIZE_fetch_and_add_acquire, AO_XSIZE_fetch_and_add_release):
361 Fix type of function result by adding
362 'unsigned' to XCTYPE.
363 * src/atomic_ops/generalize-small.h: Regenerate.
367 2012-05-11 Ivan Maidanski <ivmai@mail.ru>
369 * configure.ac, README: Bump version to 7.2 (final).
370 * configure: Regenerate.
372 2012-05-01 H.J. Lu <hjl.tools@gmail.com>
374 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_fetch_and_add_full,
375 AO_and_full, AO_or_full, AO_xor_full, AO_compare_and_swap_full):
376 Remove 'q' suffix in asm instruction.
378 2012-04-16 H.J. Lu <hjl.tools@gmail.com>
380 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_T_IS_INT): Defined
383 2012-03-28 Ivan Maidanski <ivmai@mail.ru>
385 * configure.ac (PICFLAG): Adjust AC_MSG_CHECKING message; report
386 "none" result if no -fPIC is needed (for Cygwin/MinGW); determine
387 whether GCC -fPIC option causes __PIC__ macro definition; pass
388 -D __PIC__ to PICFLAG (instead of CFLAGS) only if not defined
389 automatically in case -fPIC specified; update comment.
391 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
393 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Do not use __m128
394 if GCC pre-v4 (at least, xmmintrin.h is missing in gcc-3.4.3-x86_64
395 included in Solaris 10 distribution).
397 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
399 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Fix a typo in
402 2012-03-19 Ivan Maidanski <ivmai@mail.ru>
404 * configure: Regenerate.
405 * Makefile.in: Likewise.
407 2011-08-14 Petter Urkedal <paurkedal@gmail.com>
409 * atomic_ops.pc.in -> pkgconfig/atomic_ops.pc.in: Moved.
410 * pkgconfig/atomic_ops-uninstalled.pc.in: Added developer version.
411 * configure.ac, Makefile.am: Update accordingly.
413 2011-08-04 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
415 * atomic_ops.pc.in: new file.
416 * Makefile.am (pkgconfigdir, pkgconfig_DATA): new items.
417 * configure.ac (AC_CONFIG_FILES): add atomic_ops.pc.
418 * configure, Makefile.in: Regenerate.
420 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
422 * src/atomic_ops/sysdeps/gcc/x86.h
423 (AO_compare_double_and_swap_double_full): Use EDI register for
424 "new_val1" argument instead of a memory operand and use XCHG assembler
425 instruction instead of push/pop in case of PIC mode (to workaround
426 a bug in GCC 4.6.1); update the comment.
428 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
430 * src/atomic_ops_stack.c (AO_stack_push_release): Make "cptr" local
431 variable volatile to workaround a bug in clang-1.1/x86 compiler; add
434 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
436 * src/atomic_ops/sysdeps/gcc/x86.h
437 (AO_compare_double_and_swap_double_full): Fix argument name in the
439 * src/atomic_ops/sysdeps/sunc/x86.h
440 (AO_compare_double_and_swap_double_full): Likewise.
442 2012-03-04 Ivan Maidanski <ivmai@mail.ru>
444 * src/atomic_ops_malloc.h (AO_malloc_enable_mmap): Fix a typo in the
447 2012-01-19 Ivan Maidanski <ivmai@mail.ru>
449 * tests/test_atomic.c (main): Put "void" keyword into the arguments
450 specification of the function prototype.
451 * tests/test_stack.c (main): Likewise.
453 2011-12-16 Ivan Maidanski <ivmai@mail.ru>
455 * src/atomic_ops/sysdeps/gcc/arm.h (__ARM_ARCH_7__, __ARM_ARCH_7A__):
456 Recognize to override __ARM_ARCH_5xx__ macros (since Android NDK GCC
457 defines both for armv7); update comment.
459 2011-11-29 Ivan Maidanski <ivmai@mail.ru>
461 * src/atomic_ops/sysdeps/gcc/hexagon.h: Include generalize.h file
462 before ao_t_is_int.h one.
463 * src/atomic_ops/sysdeps/gcc/ia64.h: Likewise.
464 * src/atomic_ops/sysdeps/hpc/ia64.h: Likewise.
466 2011-11-03 Ivan Maidanski <ivmai@mail.ru>
468 * src/atomic_ops/generalize-small.template
469 (AO_XSIZE_fetch_and_add_full, AO_XSIZE_fetch_and_add_acquire,
470 AO_XSIZE_fetch_and_add_release): Change return type from AO_t to
472 * src/atomic_ops/generalize-small.h: Regenerate.
474 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
476 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap_full):
477 Change "result" local variable type from AO_t to int.
478 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_compare_and_swap_full):
481 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
483 * tests/test_atomic_include.h: Regenerate.
485 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
487 * tests/test_atomic_include.template (test_atomicXX): Add action for
488 the missing AO_compare_and_swap primitive.
490 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
492 * src/atomic_ops.c (init_lock): Define only unless AO_USE_NO_SIGNALS.
494 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
496 * doc/README.txt: Fix a typo.
498 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
500 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Cast
501 returned value to int.
503 2011-10-17 Ivan Maidanski <ivmai@mail.ru>
505 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
507 2011-10-17 Ivan Maidanski <ivmai@mail.ru> (really Thorsten Glaser)
509 * src/atomic_ops/sysdeps/gcc/m68k.h (AO_test_and_set_full): Cast the
512 2011-10-15 Ivan Maidanski <ivmai@mail.ru>
514 * src/atomic_ops/sysdeps/gcc/s390.h (AO_compare_and_swap_full):
515 Change return from AO_t to int.
516 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_compare_and_swap_acquire,
517 AO_compare_and_swap_release, AO_compare_and_swap_full): Likewise.
519 2011-10-11 Ivan Maidanski <ivmai@mail.ru> (really Linas Vepstas)
521 * src/atomic_ops/sysdeps/Makefile.am (nobase_private_HEADERS): Add
523 * src/atomic_ops.h: Include hexagon.h file.
524 * src/atomic_ops/sysdeps/gcc/hexagon.h: New file.
526 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
529 (AO_non_posix_implementation_is_entirely_in_headers): Make external.
531 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
533 * configure: Regenerate.
534 * tests/Makefile.in: Ditto.
535 * tests/test_atomic_include.h: Ditto.
537 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
539 * configure.ac (PICFLAG, THREADDLLIBS): Define as empty for MinGW.
540 * configure.ac (have_pthreads): New definition (set to true unless
542 * configure.ac (HAVE_PTHREAD_H): New AM conditional (based on
543 have_pthreads value).
544 * tests/Makefile.am (test_atomic_pthreads_SOURCES,
545 test_atomic_pthreads_CPPFLAGS, test_atomic_pthreads_LDADD): Define
546 only if HAVE_PTHREAD_H.
547 * tests/Makefile.am (TESTS): Don't include test_atomic_pthreads unless
549 * tests/Makefile.am (check_PROGRAMS): Define to TESTS value.
551 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
553 * configure.ac (PICFLAG): Set to -fPIC if GCC but not Gygwin.
555 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
557 * tests/test_malloc.c (LIST_LENGTH, LARGE_OBJ_SIZE): Define to
558 a smaller value unless HAVE_MMAP.
560 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
562 * tests/test_malloc.c (cons, run_one_test): Call exit with a non-zero
563 code (instead of abort) if out of memory.
564 * tests/test_stack.c (add_elements): Likewise.
565 * tests/test_stack.c (main): Use a distinct exit code if a thread
568 2011-09-15 Ivan Maidanski <ivmai@mail.ru>
570 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo (replace AO_FORCE_CAS
571 with AO_REQUIRE_CAS in a comment).
573 2011-09-08 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
575 * src/Makefile.am, tests/Makefile.am: Set compiler include paths
576 to $(top_builddir)/src and $(top_srcdir)/src.
577 * src/Makefile.in: Regenerate.
578 * tests/Makefile.in: Ditto.
580 2011-07-14 Ivan Maidanski <ivmai@mail.ru>
582 * tests/list_atomic.template (list_atomicXX): Remove "addr" local
583 variable (use "&val" instead); initialize "newval" and "oldval"
584 local variables; rename "tsaddr" local variable to "ts" one.
585 * tests/list_atomic.template (list_atomicXX): Fix
586 AO_test_and_setXX call (pass address instead of value).
587 * tests/list_atomic.template: Expand all tabs to spaces; remove
588 trailing spaces at EOLn.
589 * tests/run_parallel.inc: Ditto.
590 * tests/test_atomic.c: Ditto.
591 * tests/list_atomic.c: Regenerate.
592 * tests/run_parallel.inc (AO_PTRDIFF_T): New macro.
593 * tests/run_parallel.inc (tramp): Cast between pointer and integer
594 types via casting to AO_PTRDIFF_T.
595 * tests/test_atomic.c (add1sub1_thr, acqrel_thr): Ditto.
596 * tests/run_parallel.inc (run_parallel): Adjust printf format
597 specifiers for DWORD parameters.
598 * tests/test_stack.c: Skip test if no pthreads.
600 2011-06-27 Ivan Maidanski <ivmai@mail.ru> (really Jeremy Huddleston)
602 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
603 Explicitly cast 0xff to unsigned char (otherwise LLVM v2.7 GAS
604 reports an error); don't recognize AO_XCHGB_RET_WORD.
605 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
608 2011-06-15 Ivan Maidanski <ivmai@mail.ru>
610 * configure.ac, README: Change to version 7.2alpha7.
611 * configure: Regenerate.
615 2011-06-14 Ivan Maidanski <ivmai@mail.ru>
617 * configure.ac, README: Change to version 7.2alpha6.
618 * configure: Regenerate.
620 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
622 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_load): Do not
623 define for pre-ARMv6 directly (revert part of the previous
625 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set,
626 AO_test_and_set_full): Refine the comment.
627 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Define
628 SWP-based implementation at the end of file (if none of
629 AO_test_and_set functions are defined previously).
630 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Remove
631 SWP-based implementation (revert part of the previous commit).
632 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store): Remove redundant
633 definition at the file end (revert part of the previous commit).
635 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
637 * src/atomic_ops/sysdeps/gcc/arm.h: Handle ARMv6M architecture.
638 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Force "swp"
639 instruction usage (instead of ldrex/strex) if AO_FORCE_USE_SWP;
641 * src/atomic_ops/sysdeps/gcc/arm.h
642 (AO_compare_double_and_swap_double): Handle ARMv7EM architecture
644 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set, AO_nop_full,
645 AO_load, AO_store): Define at the end of file (in case not defined
648 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
650 * src/atomic_ops/generalize.h: Reformat code.
651 * src/atomic_ops/generalize.h (AO_test_and_set_acquire): Fix
653 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_test_and_set): Ditto.
654 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Ditto.
655 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Add
656 a comment (about SWP instruction).
658 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
660 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
661 AO_THUMB_RESTORE_MODE): Use single-digit labels (to workaround
662 a bug in GCC v4.2.1 which reports "garbage following instruction"
664 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Use "IT"
665 instruction only for Thumb-2 mode.
667 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
669 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
670 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define as empty
672 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
673 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
674 AO_compare_and_swap, AO_compare_double_and_swap_double): Remove
675 unnecessary "memory" keyword from the list of clobbered registers
676 (revert part of the previous commit).
677 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Add
678 a comment for "IT" instruction.
679 * src/atomic_ops/sysdeps/gcc/arm.h
680 (AO_compare_double_and_swap_double): Don't define on the
681 architectures where unimplemented; add a comment; replace return
682 (in the loop) statement with break.
684 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
686 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
687 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define new
688 macro (to switch temporarily CPU mode to ARM in inline assembler
689 if compiling in the Thumb mode and to restore it back on leave).
690 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_store,
691 AO_test_and_set, AO_fetch_and_add, AO_fetch_and_add1,
692 AO_fetch_and_sub1, AO_compare_and_swap, AO_test_and_set_full):
693 Enable compilation in the Thumb mode (use AO_THUMB_GO_ARM,
694 AO_THUMB_RESTORE_MODE and AO_THUMB_SWITCH_CLOBBERS macros).
695 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
696 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
697 AO_compare_and_swap, AO_compare_double_and_swap_double): Add
698 "memory" to the list of clobbered registers.
700 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
702 * src/atomic_ops/sysdeps/gcc/arm.h: Reformat code.
703 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
704 AO_test_and_set_full): Add assembler comment containing the
707 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
709 * tests/test_malloc.c (run_one_test): Test AO_malloc() result
710 (if out of memory then print the message and abort).
711 * tests/test_stack.c (add_elements): Ditto.
713 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
715 * src/atomic_ops/generalize.h (AO_HAVE_or_full): Add missing
717 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_HAVE_nop_write):
719 * src/atomic_ops/sysdeps/read_ordered.h (AO_HAVE_nop_read): Ditto.
720 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_store_release):
723 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
725 * src/atomic_ops/generalize-small.template
726 (AO_HAVE_XSIZE_fetch_and_add_full): Add missing definition.
727 * src/atomic_ops/generalize-small.template: Reformat code.
728 * src/atomic_ops/generalize-small.h: Regenerate.
730 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
732 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Remove
733 blank line between AO_func and AO_HAVE_func definitions.
734 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
735 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
736 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
737 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
738 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
739 * src/atomic_ops/sysdeps/ordered.h: Ditto.
740 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
741 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
742 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
743 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
744 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
745 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
746 * src/atomic_ops/sysdeps/gcc/cris.h: Ditto.
747 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
748 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
749 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
750 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
751 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
752 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
753 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
754 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
755 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
756 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
757 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
758 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
759 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
760 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
761 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
762 * src/atomic_ops/sysdeps/sunc/sparc.h: Ditto.
763 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
764 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
765 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Reformat
767 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
768 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
769 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
770 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
771 * src/atomic_ops/sysdeps/ordered.h: Ditto.
772 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
773 * src/atomic_ops/sysdeps/test_and_set_t_is_char.h: Remove file
775 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Don't
777 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire,
778 AO_test_and_set, AO_compare_and_swap): Merge adjacent definitions.
779 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_store_release):
781 * src/atomic_ops/sysdeps/sunc/sparc.h: Expand all tabs to spaces;
782 remove trailing spaces at EOLn.
784 2011-06-02 Ivan Maidanski <ivmai@mail.ru>
786 * tests/test_malloc.c (main): Remove unused "exper_n" local
788 * tests/test_stack.c (run_one_test): Remove unused "aux" local
791 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
793 * src/atomic_ops/sysdeps/gcc/arm.h
794 (AO_compare_double_and_swap_double,
795 AO_HAVE_compare_double_and_swap_double): Define only starting from
797 * src/atomic_ops/sysdeps/gcc/arm.h
798 (AO_compare_double_and_swap_double): Fix function name in
799 assembler code; replace while (1) loop with "do-while".
801 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
803 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full):
804 Specify "%b0" (instead of "%0") in "xchg" instruction (to
805 workaround a bug in Sun C 5.11).
806 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
809 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
811 * src/atomic_ops_malloc.c (AO_malloc_enable_mmap): Workaround for
812 Sun C compiler (call "release" variant of AO_store).
814 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
816 * configure.ac (_PTHREADS): New template (used for NetBSD).
817 * configure.ac (THREADDLLIBS): New macro.
818 * tests/Makefile.am (test_atomic_LDADD, test_stack_LDADD,
819 test_atomic_pthreads_LDADD, test_malloc_LDADD): Use THREADDLLIBS
820 instead of "-lpthread".
821 * configure: Regenerate.
822 * Makefile.in: Ditto.
823 * doc/Makefile.in: Ditto.
824 * src/Makefile.in: Ditto.
825 * src/atomic_ops/Makefile.in: Ditto.
826 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
827 * src/config.h.in: Ditto.
828 * tests/Makefile.in: Ditto.
830 2011-05-30 Ivan Maidanski <ivmai@mail.ru>
832 * configure.ac (PIC): Add workaround for GCC v3.4.6 which does not
833 define the corresponding macro.
834 * configure.ac: Don't check for GCC twice.
835 * configure: Regenerate.
836 * tests/test_malloc.c (DEFAULT_NTHREADS): New macro.
837 * tests/test_malloc.c (run_one_test): Refine printed message (in
839 * tests/test_malloc.c (main): Use DEFAULT_NTHREADS.
840 * tests/test_stack.c (main): Cast AO_stack_pop() returned pointer.
841 * src/atomic_ops_malloc.c (USE_MMAP_ANON, GC_MMAP_FLAGS,
842 OPT_MAP_ANON): New macro.
843 * src/atomic_ops_malloc.c (get_mmaped): Pass -1 (instead of 0) as
844 file descriptor to mmap() if MAP_ANONYMOUS (same as for MAP_ANON).
845 * src/atomic_ops_malloc.c (get_mmaped): Use USE_MMAP_ANON,
846 GC_MMAP_FLAGS and OPT_MAP_ANON macros; reformat code; check open()
849 2011-05-11 Ivan Maidanski <ivmai@mail.ru>
851 * tests/test_malloc.c: Expand all tabs to spaces; remove trailing
853 * tests/test_malloc.c (LENGTH, LARGE): Rename to LIST_LENGTH and
854 LARGE_OBJ_SIZE, respectively.
855 * tests/test_malloc.c (MAX_NTHREADS, N_REVERSALS, LIST_LENGTH,
856 LARGE_OBJ_SIZE): Do not define unless undefined.
857 * tests/test_malloc.c (run_one_test): Recognize DEBUG_RUN_ONE_TEST
860 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
862 * tests/Makefile.am (EXTRA_DIST): Add list_atomic.c; update
864 * tests/Makefile.am (CLEANFILES): Remove test_atomic_include.h,
866 * tests/Makefile.am: Remove trailing spaces at EOLn.
867 * tests/Makefile.in: Regenerate.
869 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
871 * tests/test_stack.c (MAX_NTHREADS, N_EXPERIMENTS): Do not define
873 * tests/test_stack.c: Expand all tabs to spaces.
874 * tests/test_atomic_include.h: Ditto.
875 * tests/test_stack.c (main): Free pop'ed elements.
876 * tests/test_atomic_include.h (test_atomic, test_atomic_release,
877 test_atomic_acquire, test_atomic_read, test_atomic_write,
878 test_atomic_full, test_atomic_release_write,
879 test_atomic_acquire_read): Remove prototype.
881 2011-04-22 Ivan Maidanski <ivmai@mail.ru>
883 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_MASK): Add "volatile" for
884 asm; remove redundant trailing ';'.
886 2011-04-11 Ivan Maidanski <ivmai@mail.ru> (really Jim Meyering)
888 * doc/README.txt: Remove doubled words in comments.
890 2011-03-18 Ivan Maidanski <ivmai@mail.ru>
892 * src/atomic_ops/sysdeps/gcc/arm.h: Test for all the known pre-v6
893 ARM chips instead of all the currently existing v6+ ones.
895 2011-03-13 Ivan Maidanski <ivmai@mail.ru>
897 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo in a comment;
898 expand all tabs to spaces.
899 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
900 Recognize AO_XCHGB_RET_WORD new macro (to workaround a bug).
901 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
904 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
906 * src/atomic_ops.c: Include sys/time.h (to get timespec) for NaCl.
907 * src/atomic_ops_malloc.c (msb): Do the shift by 32 only once (in
908 a conditional expression) to prevent a compiler warning.
909 * src/atomic_ops_malloc.c: Expand all tabs to spaces; remove
910 trailing spaces at EOLn.
912 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
914 * src/atomic_ops.c: Explicitly define AO_USE_NO_SIGNALS and
915 AO_USE_NANOSLEEP for NaCl.
917 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
919 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
920 automake-1.11.1 and libtool-2.4).
923 2011-02-09 Ivan Maidanski <ivmai@mail.ru>
925 * src/atomic_ops.c (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): New
927 * src/atomic_ops.c (AO_USE_WIN32_PTHREADS): Imply
929 * src/atomic_ops.c: Don't include signal.h if AO_USE_NO_SIGNALS.
930 * src/atomic_ops.c: Include time.h if AO_USE_NANOSLEEP.
931 * src/atomic_ops.c (AO_locks, AO_pause): Reformat the code.
932 * src/atomic_ops.c (AO_pause): Use nanosleep() if
934 * src/atomic_ops.c (all_sigs, initialized,
935 AO_compare_and_swap_emulation,
936 AO_compare_double_and_swap_double_emulation): Use
937 AO_USE_NO_SIGNALS instead of AO_USE_WIN32_PTHREADS.
939 2011-01-07 Ivan Maidanski <ivmai@mail.ru>
941 * src/.cvsignore: Add more auto-generated files.
942 * tests/.cvsignore: Ditto.
943 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full, AO_store,
944 AO_compare_double_and_swap_double): Reformat code.
945 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
946 AO_compare_double_and_swap_double): Ditto.
947 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
948 Produce "it eq" instruction only for Thumb mode.
949 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
951 2010-11-23 Ivan Maidanski <ivmai@mail.ru> (really Michael Hope)
953 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
954 Insert "it eq" just before "strexeq" (required for Thumb-2 mode,
955 ignored in ARM mode).
956 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
958 2010-09-15 Ivan Maidanski <ivmai@mail.ru> (with input from Gregory Farnum)
960 * src/atomic_ops.h: Include armcc/arm_v6.h if __ARMCC__.
961 * src/atomic_ops.h: Include ibmc/powerpc.h if __IBMC__.
962 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if msftc/arm.h is
964 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if AO_CAN_EMUL_CAS
965 is defined but emul_cas.h has not been included.
966 * src/atomic_ops/sysdeps/gcc/arm.h: Fix a typo.
968 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
970 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
971 automake-1.11.1 and libtool-2.2.8).
974 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
976 * src/atomic_ops/sysdeps/gcc/arm.h: Replace C++ style comment
979 2010-05-30 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
981 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Use
982 "register long" (instead of "int") for "ret" variable.
983 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Replace
984 with AO_test_and_set_full (same for AO_HAVE_test_and_set).
985 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_compare_and_swap_full):
986 New function implemented.
988 2010-05-22 Ivan Maidanski <ivmai@mail.ru>
990 * src/atomic_ops/sysdeps/Makefile.am (nobase_sysdep_HEADERS):
992 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
994 2010-05-21 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
996 * src/atomic_ops.h: Recognize __avr32__ (include gcc/avr32.h).
997 * src/atomic_ops/sysdeps/gcc/avr32.h: New file.
999 2010-04-29 Ivan Maidanski <ivmai@mail.ru>
1001 * doc/README_malloc.txt: Fix a typo.
1002 * doc/README_stack.txt: Ditto.
1004 2010-02-25 Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
1006 * .cvsignore: New file.
1007 * doc/.cvsignore: Ditto.
1008 * src/.cvsignore: Ditto.
1009 * src/atomic_ops/.cvsignore: Ditto.
1010 * src/atomic_ops/sysdeps/.cvsignore: Ditto.
1011 * tests/.cvsignore: Ditto.
1013 2010-02-19 Ivan Maidanski <ivmai@mail.ru> (mostly really Patrick Marlier)
1015 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full):
1016 Use __sync_bool_compare_and_swap() if AO_USE_SYNC_CAS_BUILTIN.
1017 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1019 * src/atomic_ops.h (AO_USE_SYNC_CAS_BUILTIN): New macro defined
1020 if GCC v4.2+ or Intel compiler v11.1+ (only for amd64).
1021 * src/atomic_ops.h: Include GCC-specific sysdeps files for Intel
1022 compiler in GCC compatible mode (only for x86 and amd64).
1024 2010-02-18 Ivan Maidanski <ivmai@mail.ru>
1026 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Don't check
1027 for AO_USE_PENTIUM4_INSTRS (since "mfence" (SSE2) is supported on
1028 all x86_64/amd64 chips); remove the comment.
1029 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1030 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Define only
1031 if AO_ASM_X64_AVAILABLE.
1032 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1033 Use built-in __sync_bool_compare_and_swap() if GCC v4.2+.
1035 2010-02-17 Ivan Maidanski <ivmai@mail.ru> (really Patrick Marlier)
1037 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full,
1038 AO_compare_double_and_swap_double_full): Use EAX for the result
1039 since cmpxchg clobbers it.
1040 * src/atomic_ops/sysdeps/sunc/x86.h (AO_compare_and_swap_full,
1041 AO_compare_double_and_swap_double_full): Ditto.
1042 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full,
1043 AO_compare_double_and_swap_double_full): Ditto.
1044 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_compare_and_swap_full,
1045 AO_compare_double_and_swap_double_full): Ditto.
1047 2010-02-04 Ivan Maidanski <ivmai@mail.ru>
1049 * doc/Makefile.in: Regenerate.
1051 2010-02-04 Ivan Maidanski <ivmai@mail.ru> (really Ian Wienand)
1053 * doc/Makefile.am: Remove duplicate file in the list.
1055 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1057 * ChangeLog: Fix some typos.
1059 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1061 * src/atomic_ops_stack.c (AO_stack_push_explicit_aux_release):
1062 Define "i" variable only if used (to suppress a compiler warning).
1064 2010-02-02 Ivan Maidanski <ivmai@mail.ru>
1066 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full): Fix
1067 "xchg" data size (remove "l" suffix).
1068 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
1070 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full): Use
1072 * src/atomic_ops/sysdeps/sunc/x86.h
1073 (AO_compare_double_and_swap_double_full,
1074 AO_HAVE_compare_double_and_swap_double_full): Comment out (since
1075 not tested, might be wrong, and tickles a bug in some Sun CC
1076 versions; besides, __PIC__ macro is never predefined by Sun CC).
1078 2010-01-29 Ivan Maidanski <ivmai@mail.ru>
1080 * INSTALL: Regenerate (by autoreconf -vif using libtool-2.2.6b,
1081 automake-1.11.1, autoconf-2.65).
1082 * Makefile.in: Ditto.
1083 * aclocal.m4: Ditto.
1085 * config.guess: Ditto.
1086 * config.sub: Ditto.
1089 * install-sh: Ditto.
1091 * mkinstalldirs: Ditto.
1092 * doc/Makefile.in: Ditto.
1093 * src/Makefile.in: Ditto.
1094 * src/atomic_ops/Makefile.in: Ditto.
1095 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1096 * src/config.h.in: Ditto.
1097 * tests/Makefile.in: Ditto.
1099 2009-12-19 Ivan Maidanski <ivmai@mail.ru>
1101 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_lwsync): Redirect to
1102 AO_sync() if __NO_LWSYNC__ (same as for gcc/powerpc.h).
1104 2009-12-17 Ivan Maidanski <ivmai@mail.ru> (really Emmanuel Stapf)
1106 * src/atomic_ops.h: Recognize _M_X64 (as an alias for _AMD64_).
1108 2009-12-04 Ivan Maidanski <ivmai@mail.ru>
1110 * configure.ac, README: Change to version 7.2alpha5.
1111 * configure: Regenerate.
1115 2009-12-02 Ivan Maidanski <ivmai@mail.ru>
1117 * configure.ac, README: Change to version 7.2alpha4.
1118 * configure: Regenerate.
1120 2009-12-01 Ivan Maidanski <ivmai@mail.ru>
1122 * configure.ac, README: Change to version 1.3alpha1.
1123 * configure: Regenerate.
1125 2009-11-21 Ivan Maidanski <ivmai@mail.ru> (really Daniel R. Grayson)
1127 * configure.ac (AC_CONFIG_COMMANDS): Quote PICFLAG, CC, DEFS
1129 * configure: Regenerate.
1131 2009-10-06 Ivan Maidanski <ivmai@mail.ru>
1133 * src/atomic_ops/sysdeps/gcc/sh.h: Remove commented out AO_TS_SET
1136 2009-10-05 Ivan Maidanski <ivmai@mail.ru>
1138 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1140 2009-10-05 Ivan Maidanski <ivmai@mail.ru> (really Takashi YOSHII)
1142 * src/atomic_ops/sysdeps/gcc/sh.h: New file.
1143 * src/atomic_ops.h: Include gcc/sh.h if __arm__.
1144 * src/atomic_ops/sysdeps/Makefile.am: Add gcc/sh.h entry.
1146 2009-10-02 Ivan Maidanski <ivmai@mail.ru>
1148 * src/atomic_ops/sysdeps/Makefile.am: Add armcc/arm_v6.h,
1149 msftc/arm.h, msftc/common32_defs.h, sunc/x86.h sunc/x86_64.h
1150 entries; order all entries alphabetically.
1151 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1153 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1155 * aclocal.m4: Regenerate (by autoreconf -vif using libtool-2.2,
1156 automake-1.10.2, autoconf-2.64).
1158 * Makefile.in: Ditto.
1159 * aclocal.m4: Ditto.
1160 * config.guess: Ditto.
1161 * config.sub: Ditto.
1164 * install-sh: Ditto.
1166 * mkinstalldirs: Ditto.
1167 * doc/Makefile.in: Ditto.
1168 * src/config.h.in: Ditto.
1169 * src/Makefile.in: Ditto.
1170 * src/atomic_ops/Makefile.in: Ditto.
1171 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1172 * tests/Makefile.in: Ditto.
1174 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1176 * src/atomic_ops/sysdeps/gcc/x86.h: Remove spaces preceding '#'
1177 for the preprocessor directives.
1178 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1180 2009-09-30 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1182 * README: Move notes from the hand-edited part of INSTALL which
1183 was overwritten by Automake recently.
1185 2009-09-26 Ivan Maidanski <ivmai@mail.ru>
1187 * aclocal.m4: Regenerate (by autoreconf -vif).
1188 * config.guess: Ditto.
1189 * config.sub: Ditto.
1192 * Makefile.in: Ditto.
1193 * doc/Makefile.in: Ditto.
1194 * src/config.h.in: Ditto.
1195 * src/Makefile.in: Ditto.
1196 * src/atomic_ops/Makefile.in: Ditto.
1197 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1198 * tests/Makefile.in: Ditto.
1200 2009-09-25 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1202 * configure.ac: Replace AC_PROG_CC with AM_PROG_CC_C_O.
1204 2009-09-16 Ivan Maidanski <ivmai@mail.ru>
1206 * ChangeLog: Remove trailing spaces at EOLn.
1207 * doc/README.txt: Expand all tabs to spaces; remove trailing
1208 spaces at EOLn; remove multiple trailing blank lines.
1209 * src/atomic_ops.c: Ditto.
1210 * src/atomic_ops.h: Ditto.
1211 * src/atomic_ops/generalize-small.h: Ditto.
1212 * src/atomic_ops/generalize.h: Ditto.
1213 * src/atomic_ops/sysdeps/acquire_release_volatile.h: Ditto.
1214 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Ditto.
1215 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Ditto.
1216 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Ditto.
1217 * src/atomic_ops/sysdeps/ao_t_is_int.h: Ditto.
1218 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Ditto.
1219 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
1220 * src/atomic_ops/sysdeps/char_acquire_release_volatile.h: Ditto.
1221 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
1222 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
1223 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
1224 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
1225 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
1226 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
1227 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
1228 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
1229 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
1230 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
1231 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
1232 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
1233 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
1234 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
1235 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
1236 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
1237 * src/atomic_ops/sysdeps/icc/ia64.h: Ditto.
1238 * src/atomic_ops/sysdeps/int_acquire_release_volatile.h: Ditto.
1239 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
1240 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
1241 * src/atomic_ops/sysdeps/msftc/arm.h: Ditto.
1242 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
1243 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
1244 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1245 * src/atomic_ops/sysdeps/ordered.h: Ditto.
1246 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
1247 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
1248 * src/atomic_ops/sysdeps/short_acquire_release_volatile.h: Ditto.
1249 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
1250 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
1251 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Ditto.
1252 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1253 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1254 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h: Ditto.
1255 * src/atomic_ops_stack.c: Ditto.
1256 * src/atomic_ops_stack.h: Ditto.
1257 * src/atomic_ops/sysdeps/gcc/arm.h: Replace non-ASCII quotes in a
1259 * src/atomic_ops/sysdeps/gcc/mips.h: Use Unix-style EOLn.
1261 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1264 * src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
1265 (regarding memory barrier).
1266 * src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
1267 AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
1268 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
1269 AO_test_and_set): Replace FIXME with the comment saying it is
1270 emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
1271 * src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
1272 using InterlockedCompareExchange() (assuming the latter has a full
1274 * src/atomic_ops/sysdeps/msftc/arm.h: Include
1275 all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
1276 of pre-ARMv6; add the comment.
1278 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1281 * src/atomic_ops/sysdeps/armcc/arm_v6.h
1282 (AO_compare_double_and_swap_double): Replace false/true with 0/1.
1283 * src/atomic_ops/sysdeps/gcc/arm.h
1284 (AO_compare_double_and_swap_double): Ditto.
1285 * src/atomic_ops/sysdeps/gcc/arm.h: Recognize more ARMv6+
1286 predefined macros (6J, 6ZK, 7A, 7M, 7R).
1287 * src/atomic_ops/sysdeps/gcc/arm.h
1288 (AO_compare_double_and_swap_double): Add "cc" clobber to asm.
1289 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_load_acquire):
1290 Correct the name (convert from the lower case).
1291 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_load_acquire):
1293 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_test_and_set,
1294 AO_compare_and_swap): Comment out unimplemented code (and the
1295 corresponding macros); add FIXME.
1296 * src/atomic_ops.c: Recognize AO_USE_WIN32_PTHREADS overriding
1297 _MSC_VER and __MINGW32__ predefined macros (useful for WinCE with
1298 pthreads-w32 library); don't include signal.h, sys/time.h,
1299 sys/select.h in this case; include windows.h instead.
1300 * src/atomic_ops.c (AO_pause): Use Sleep() in case of
1301 AO_USE_WIN32_PTHREADS (instead of select()).
1302 * src/atomic_ops.c (all_sigs, initialized): Don't define in case
1303 of AO_USE_WIN32_PTHREADS.
1304 * src/atomic_ops.c (AO_compare_and_swap_emulation,
1305 AO_compare_double_and_swap_double_emulation): Don't deal with
1306 signals in case of AO_USE_WIN32_PTHREADS.
1308 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1311 * src/atomic_ops/sysdeps/msftc/arm.h: New file (initial support
1313 * src/atomic_ops/sysdeps/msftc/common32_defs.h: New file.
1314 * src/atomic_ops/sysdeps/msftc/arm.h (AO_ASSUME_ARM_ARCH6): New
1316 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1317 (AO_USE_INTERLOCKED_INTRINSICS): Ditto.
1318 * src/atomic_ops/sysdeps/msftc/x86.h: Move "Interlocked"
1319 declarations to common32_defs.h.
1320 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1321 (AO_INTERLOCKED_VOLATILE): New macro defined (used by
1322 Interlocked-based primitives) for compatibility with older VC++.
1323 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Don't include
1324 missing <intrin.h> if WinCE target.
1325 * src/atomic_ops/sysdeps/msftc/x86.h: Include common32_defs.h
1326 (define AO_USE_INTERLOCKED_INTRINSICS unconditionally).
1327 * src/atomic_ops/sysdeps/msftc/x86.h (AO_fetch_and_add_full,
1328 AO_fetch_and_add1_full, AO_fetch_and_sub1_full,
1329 AO_compare_and_swap_full): Move arch-independent primitives to
1331 * src/atomic_ops/sysdeps/msftc/x86.h: Remove comment about i486 or
1332 better CPU (since Interlocked Add and Xchg primitives are available
1334 * src/atomic_ops.h: Include msftc/x86.h even if _M_IX86 is less than
1336 * src/atomic_ops.h: Include msftc/x86.h if "x86" defined (for WinCE
1338 * src/atomic_ops.h: Include msftc/arm.h if ARM target (for WinCE).
1340 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1343 * src/atomic_ops/sysdeps/msftc/x86.h: Fix comments (prefix
1344 ASSUME_WINDOWS98 with "AO_").
1345 * src/atomic_ops/sysdeps/msftc/x86.h: Prefix ASSUME_VISTA macro with
1347 * src/atomic_ops/sysdeps/msftc/x86.h (AO_nop_full): Replace
1348 K&R-style function definition with ANSI C one.
1349 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full):
1350 Replace AO_TS_SET with its value 0xff (some compilers does not like
1351 C enum consts inside inline assembler).
1352 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full): Add
1353 comment about "missing return value" warning.
1354 * src/atomic_ops/sysdeps/msftc/x86.h
1355 (AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE): New macro.
1356 * src/atomic_ops/sysdeps/msftc/x86.h (AO_compare_and_swap_full): Use
1357 _InterlockedCompareExchange() with args and result of PVOID type
1358 if AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE is defined (mostly for
1359 DigitalMars compiler support).
1360 * src/atomic_ops/sysdeps/msftc/x86.h
1361 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1362 variables ("val1" is the lowest part of AO_double_t).
1363 * src/atomic_ops/sysdeps/msftc/x86.h
1364 (AO_compare_double_and_swap_double_full): Rename to
1365 AO_double_compare_and_swap_full (as it has 3 args).
1366 * src/atomic_ops/sysdeps/msftc/x86.h: Replace C++ style comment
1369 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1372 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove comments about i486
1373 and 32-bit WinChips.
1374 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1375 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Replace
1376 K&R-style function definition with ANSI C one.
1377 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1378 * src/atomic_ops/sysdeps/gcc/x86_64.h
1379 (AO_compare_double_and_swap_double_full): Fix comment.
1380 * src/atomic_ops/sysdeps/gcc/x86_64.h
1381 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1382 variables ("val1" is the lowest part of AO_double_t).
1383 * src/atomic_ops/sysdeps/msftc/x86_64.h
1384 (AO_compare_double_and_swap_double_full): Ditto.
1385 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove comment about
1387 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_ASM_X64_AVAILABLE): New
1389 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1390 "test_and_set_t_is_char.h" if AO_ASM_X64_AVAILABLE (same as in
1391 x86_64.h for gcc); remove FIXME (for re-implement test-and-set).
1392 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1393 "standard_ao_double_t.h" (same as in x86_64.h for gcc).
1394 * src/atomic_ops/sysdeps/msftc/x86_64.h: Add comment for include
1395 <intrin.h> assuming at least VC++ v8.
1396 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove _Interlocked
1397 prototypes (since they are always declared in intrin.h).
1398 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Move its
1399 definition below CAS primitive (to textually group all asm-based
1400 primitives together).
1401 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_test_and_set_full):
1402 Implement for AO_ASM_X64_AVAILABLE case.
1403 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove AO_CASDOUBLE_MISSING
1404 macro (replaced with AO_ASM_X64_AVAILABLE).
1405 * src/atomic_ops/sysdeps/msftc/x86_64.h
1406 (AO_compare_double_and_swap_double_full): Add intrinsic-based
1407 implementation for VC++ v9+.
1408 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Include
1409 <xmmintrin.h> (and use "__m128" type) if _WIN64.
1410 * src/atomic_ops/sysdeps/standard_ao_double_t.h
1411 (AO_HAVE_DOUBLE_PTR_STORAGE): Define it always (as
1412 "double_ptr_storage" is defined for all cases).
1414 2009-09-09 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1416 * src/atomic_ops/sysdeps/gcc/sparc.h (NO_SPARC_V9):
1417 Renamed to AO_NO_SPARC_V9.
1419 2009-09-01 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1421 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
1422 AO_TS_VAL_t for "oldval" (for 64-bit support).
1423 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
1424 New function implemented.
1426 2009-08-12 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1427 (diff107_cvs, resembling diff78 and diff88_cvs)
1429 * src/atomic_ops/sysdeps/sunc/x86.h: New file.
1430 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1431 * src/atomic_ops.h (AO_INLINE): Support inlining for DigitalMars,
1433 * src/atomic_ops.h (AO_compiler_barrier): Use intrinsic-based
1434 implementation for VC++ v8+ (include <intrin.h> before it unless
1435 WinCE target); use asm-based barrier implementation for Borland,
1436 DigitalMars and Watcom.
1437 * src/atomic_ops.h: Fix comment (for x86_64).
1438 * src/atomic_ops.h: Include specialized x86.h and x86_64.h arch
1439 headers for Sun C (if not AO_USE_PTHREAD_DEFS).
1440 * src/atomic_ops.h: Include VC-specific arch headers for Borland,
1441 DigitalMars and Watcom (Win32 target only).
1443 2009-05-27 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1444 (diff87_cvs, resembling diff29, diff68, diff78 partly)
1446 * doc/README.txt: Remove outdated info about Windows support.
1447 * src/atomic_ops/generalize.h (AO_nop_full): Replace
1448 K&R-style function definition with ANSI C one.
1449 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Ditto.
1450 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_nop_full, AO_nop_write):
1452 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Ditto.
1453 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_nop_full): Ditto.
1454 * src/atomic_ops/sysdeps/gcc/mips.h (AO_nop_full): Ditto.
1455 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_nop_full, AO_lwsync): Ditto.
1456 * src/atomic_ops/sysdeps/gcc/x86.h (AO_nop_full): Ditto.
1457 * src/atomic_ops/sysdeps/generic_pthread.h (AO_nop_full): Ditto.
1458 * src/atomic_ops/sysdeps/hpc/ia64.h (AO_nop_full): Ditto.
1459 * src/atomic_ops/sysdeps/icc/ia64.h (AO_nop_full): Ditto.
1460 * src/atomic_ops/sysdeps/ordered.h (AO_nop_full): Ditto.
1461 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_nop_write): Ditto.
1462 * src/atomic_ops/sysdeps/read_ordered.h (AO_nop_read): Ditto.
1463 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h (AO_TS_val): Fix
1466 2009-02-24 Hans Boehm <Hans.Boehm@hp.com> (Really primarily Earl Chew)
1468 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add index,
1469 update modifiers to asms, refine clobbers to "cr0", use
1470 cr0 instead of cr7, add explicit AO_fetch_and_add,
1471 add UNTESTED 64 bit support.
1473 2008-11-10 Hans Boehm <Hans.Boehm@hp.com> (Really Joerg Wagner)
1475 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Compute
1476 AO_compare_and_swap value differently, add
1477 AO_compare_double_and_swap_double, some indentation fixes.
1478 * src/atomic_ops/sysdeps/gcc/arm.h: Make gcc asm code more
1479 robust and minimize clobbers, Add AO_compare_double_and_swap_double.
1481 2008-11-06 Hans Boehm <Hans.Boehm@hp.com>
1483 * INSTALL: Add some platform-specific documentation.
1484 * src/Makefile.msft: Fix copyright notice.
1486 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1488 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
1489 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
1490 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
1491 * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
1492 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
1493 * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
1494 * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
1495 * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
1496 * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
1497 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
1498 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
1499 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
1500 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix comments.
1501 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
1502 * src/atomic_ops.c: Fix comments.
1503 * src/atomic_ops.h: Fix comments.
1504 * src/atomic_ops_stack.c: Fix comments.
1505 * src/atomic_ops_stack.h: Fix comments.
1507 2008-10-20 Hans Boehm <Hans.Boehm@hp.com> (really Andrew Agno)
1509 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
1512 2008-08-21 Hans Boehm <Hans.Boehm@hp.com>
1514 * config.guess, config.sub, configure: Regenerate/replace.
1515 Use autoconf 2.61, automake 1.9.6.
1517 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Thiemo Seufer)
1519 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz
1522 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Sebastian Siewior)
1524 * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__.
1526 2008-07-24 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1528 * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h:
1529 Add parentheses around addr arg for various functions.
1531 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1533 * src/atomic_ops/sysdeps/gcc/powerpc.h:
1534 Add const to first parameter of load calls (forgot one).
1536 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1538 * doc/README.txt, src/atomic_ops/generalize.h,
1539 src/atomic_ops/generalize-small.template,
1540 src/atomic_ops/generalize-small.h,
1541 src/atomic_ops/sysdeps/acquire_release_volatile.h,
1542 src/atomic_ops/sysdeps/char_acquire_release_volatile.h,
1543 src/atomic_ops/sysdeps/int_acquire_release_volatile.h,
1544 src/atomic_ops/sysdeps/short_acquire_release_volatile.h,
1545 src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1546 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1547 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
1548 src/atomic_ops/sysdeps/ao_t_is_int.h,
1549 src/atomic_ops/sysdeps/atomic_load_store.h,
1550 src/atomic_ops/sysdeps/char_atomic_load_store.h,
1551 src/atomic_ops/sysdeps/int_atomic_load_store.h,
1552 src/atomic_ops/sysdeps/short_atomic_load_store.h,
1553 src/atomic_ops/sysdeps/generic_pthread.h,
1554 src/atomic_ops/sysdeps/read_ordered.h,
1555 src/atomic_ops/sysdeps/sysdeps/armcc/arm_v6.h,
1556 src/atomic_ops/sysdeps/gcc/arm.h,
1557 src/atomic_ops/sysdeps/icc/ia64.h,
1558 src/atomic_ops/sysdeps/ibmc/powerpc.h:
1559 Add const to first parameter of load calls.
1561 2008-07-10 Hans Boehm <Hans.Boehm@hp.com>
1563 * src/atomic_ops/sysdeps/gcc/m68k.h: Remove SMP-unsafe
1564 AO_or_full, and let it be autogenerated instead.
1566 2008-07-03 Hans Boehm <Hans.Boehm@hp.com> (Really Thiemo Seufer)
1568 * src/atomic_ops/sysdeps/gcc/mips.h: Really add mips support,
1569 fixing a merge accident.
1571 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1574 * doc/Makefile.in, src/Makefile.in, src/atomic_ops/Makefile.in:
1577 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1580 * src/atomic_ops.h, src/atomic_ops/sysdeps/Makefile.am,
1581 src/atomic_ops/sysdeps/gcc/mips.h: Add mips support.
1582 * src/atomic_ops/sysdeps/gcc/m68k.h: Make test_and_set work
1583 on char, align AO_t. Add cas, or.
1584 * src/atomic_ops/sysdeps/gcc/s390.h: Fix include paths.
1585 * src/atomic_ops/generalize.h: Fix AO_compare_and_swap_double_acquire.
1586 * Makefile.in, aclocal.m4, src/atomic_ops/sysdeps/Makefile.in,
1587 tests/Makefile.in: Regenerate.
1589 2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
1590 (Really Ian Wienand & Debian maintainers)
1592 * src/atomic_ops/sysdeps/gcc/x86.h
1593 (AO_compare_double_and_swap_double_full): Correctly account for
1596 2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
1598 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
1599 double_ptr_storage default to long long; define everywhere.
1601 2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1603 * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
1604 compare_double_and_swap_double.
1606 2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1608 * src/atomic_ops/generalize.h: Add test_and_set generalizations,
1609 Add AO_double_compare_and_swap generalizations.
1610 * src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
1611 * src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
1612 * src/atomic_ops/sysdeps/gcc/x86.h,
1613 src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
1614 compare_double_and_swap_double, commented out for msftc.
1615 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
1616 double_ptr_storage field.
1618 2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
1619 (Merge from separate atomic_ops tree)
1621 * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
1622 double-width cas, and fix its implementation.
1623 * doc/README.txt: Clarify use of _full. Add more warnings about
1626 2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
1628 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1629 %X1 modifier to support indexed addressing.
1631 2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
1633 * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
1636 2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
1638 * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
1641 2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
1643 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1646 2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
1648 * src/atomic_ops.h: include stddef.h
1650 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
1652 * src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
1653 * src/atomic_ops.h: Add test for msftc/x86_64.h.
1654 * src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
1655 * src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
1656 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1657 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1658 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1659 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
1660 Replace unsigned long cast with size_t.
1662 2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
1664 * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
1665 Add cast for return.
1667 2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
1669 * doc/README.txt: Update to reflect C++0x effort.
1671 2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
1673 * src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
1675 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
1678 2006-11-09 Earl Chew (Agilent)
1680 * msftc/x86.h: Follow Microsoft documentation and include
1685 2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
1687 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
1689 2006-03-28 Earl Chew (Agilent)
1691 * src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
1692 * src/atomic_ops/sysdeps/msftc/x86.h:
1693 Use new intrinsics available in MSVC 2003 and MSVC 2005.
1694 Use inline assembler to generate mfence and byte sized xchg
1695 Use correct prototype for InterlockedCompareExchange.
1696 * src/atomic_ops.h: Add test for __PPC__ .
1697 * tests/run_parallel.inc: Add simple VxWorks support.
1698 * tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
1699 to silence compiler warnings.
1701 2006-11-13 Hans Boehm <Hans.Boehm@hp.com>
1703 * src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
1704 * src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
1706 2005-11-04 Hans Boehm <Hans.Boehm@hp.com>
1708 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1709 all_acquire_release_volatile.h, instead of just the pointer-sized
1711 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1712 all_acquire_release_volatile.h and all_atomic_load_store.h,
1713 instead of just the pointer-sized versions.
1717 2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
1719 * src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
1720 * src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
1721 ordered_except_wr.h.
1722 * src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
1723 instead of duplicating it.
1724 * src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
1726 2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
1728 * src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
1729 definition with one that might actually work. (Thanks to Kazu
1730 Hirata and Paul Brook.)
1732 2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
1734 * src/atomic_ops/Makefile.am: Change function naming from "byte" to
1739 2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
1740 Fix various acquire_release_volatile.h files to reflect the fact
1741 that both icc and gcc seem to reorder ordinary memory accesses around
1742 volatile accesses early in the compilation. Modify the acquire
1743 release test to catch this problem (with high probability, and only on
1746 2005-03 Hans Boehm <Hans.Boehm@hp.com>
1747 Fixes for recently introduced bugs. Update x86 and x86-64 assembly
1748 syntax to deal with complaints by some recent gcc versions.
1750 2005-02 Hans Boehm <Hans.Boehm@hp.com>
1751 Added libatomic_ops_gpl library with support for mostly
1752 lock-free stack and malloc().
1754 2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
1755 Hans Boehm <Hans.Boehm@hp.com>
1756 Use autoconf, automake, starting with code from Debian package.
1759 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1760 * test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
1761 Change most platforms to use byte-wide test-and-set locations.
1763 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1764 * ao_t_is_int.h: Add to trivially support int-wide operations
1765 on platforms with int-sized pointers.
1767 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1768 * gcc/powerpc.h: First serious attempt to support PowerPC (with
1769 help from Maged Michael and others).
1771 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1772 * sunc/sparc.[hS]: Added minimal support for the Sun SPARC compiler.
1773 * atomic_ops_sysdeps.S: Add support for platforms that require
1774 out-of-line assembly code.
1776 2004-10 Hans Boehm <Hans.Boehm@hp.com>
1777 More work on char, short, int sized data. Add both
1778 compare_double_and_swap_double and compare_and_swap_double.
1779 Typically each platform will provide at most one of these.
1781 2004-07-02 Ranko Zivojnovic
1782 Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
1784 2004-06 Hans Boehm <Hans.Boehm@hp.com>
1785 Start to add atomic_ops primitives for different sized data.
1787 2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
1789 * atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
1790 Fix support for ecc on IA64. Remove compiler_barrier workaround
1791 for gcc 3.4 and later.
1793 2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
1795 * atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
1796 atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
1797 Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
1798 for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
1799 compiler on PA_RISC and IA64.
1801 2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
1803 * many: Install under "atomic_ops" instead of "ao".
1804 Change atomic_ops include file structure. Auxiliary include
1805 files are all under include/atomic_ops.
1806 Fix (hopefully) "make dist" in atomic_ops distribution.
1807 Renamed various types to end in _t, though the old versions
1808 are still defined for backward compatibility.
1810 2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
1812 * ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
1813 AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
1814 helper macros. AO_test_and_set_full uses helper macros.
1817 Started sometime after version 0.4 release. Currently the format is
1818 informal. Eventually should become more GNU-like.