1 2016-03-24 Ivan Maidanski <ivmai@mail.ru>
3 * doc/README.txt (Future directions): Remove (obsolete information
4 about C++0x standard future).
6 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
8 * Makefile.in: Regenerate properly (remove ltmain.sh from DIST_COMMON).
10 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
12 * Makefile.in: Regenerate (by autoreconf -vif using autoconf-2.69,
13 automake-1.14.1 and libtool-2.4.2).
14 * config.guess: Likewise.
15 * config.sub: Likewise.
17 2015-01-08 James Cowgill <james410@cowgill.org.uk>
19 * src/atomic_ops/sysdeps/gcc/mips.h: Remove inclusion of
20 acquire_release_volatile.h (the ISA manuals do not say anything about
21 volatile loads / stores having acquire / release semantics).
25 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
27 * README: Bump version to 7.2f (rev. F).
29 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
31 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
32 automake-1.14.1 and libtool-2.4.2.418).
34 * Makefile.in: Likewise.
35 * aclocal.m4: Likewise.
36 * config.guess: Likewise.
37 * config.sub: Likewise.
38 * doc/Makefile.in: Likewise.
40 * src/Makefile.in: Likewise.
41 * src/atomic_ops/Makefile.in: Likewise.
42 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
43 * src/config.h.in: Likewise.
44 * test-driver: Likewise.
45 * tests/Makefile.in: Likewise.
47 2014-03-28 Jan-Erik Rediger <badboy@archlinux.us>
49 * doc/README.txt: Remove redundant "an" article (fix typo).
53 2013-11-10 Ivan Maidanski <ivmai@mail.ru>
55 * README: Bump version to 7.2e (rev. E).
57 2013-08-31 Ivan Maidanski <ivmai@mail.ru>
59 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
60 automake-1.13.4 and libtool-2.4.2).
62 * Makefile.in: Likewise.
63 * aclocal.m4: Likewise.
65 * config.guess: Likewise.
66 * config.sub: Likewise.
68 * doc/Makefile.in: Likewise.
69 * install-sh: Likewise.
71 * mkinstalldirs: Likewise.
72 * src/Makefile.in: Likewise.
73 * src/atomic_ops/Makefile.in: Likewise.
74 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
75 * tests/Makefile.in: Likewise.
76 * test-driver: New generated file.
78 2013-08-18 Ivan Maidanski <ivmai@mail.ru>
80 * aclocal.m4: Regenerate (by autoreconf -vif).
82 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
84 * src/atomic_ops/sysdeps/gcc/arm.h
85 (AO_compare_double_and_swap_double): Do not define for
86 pre-Clang3.3 (since the latter does not allocate register pairs for
87 LDREXD/STREXD instructions properly); add comment.
89 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
91 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_double_and_swap_double):
92 Swap assembly code operands ("new_val" and "addr") to prevent
93 Clang3.3 warning about operand truncation.
95 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
97 * src/atomic_ops/sysdeps/gcc/arm.h
98 (AO_compare_double_and_swap_double): Specify that LDREXD and STREXD use
99 2 adjacent registers (thus preventing Clang3.3 from register allocation
100 failures leading to "registers may not be the same" or
101 "even register required" GAS errors).
103 2013-07-30 Ivan Maidanski <ivmai@mail.ru>
105 * src/atomic_ops/generalize.h: Fix a typo in comment
108 2013-04-03 Manuel Serrano <Manuel.Serrano@inria.fr>
110 * configure.ac (AM_CONFIG_HEADER): Replace obsolete macro with with
111 AC_CONFIG_HEADERS one.
113 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
115 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
116 Do not use AO_EXPECT_FALSE (since defined only in v7.3+).
117 * src/atomic_ops/generalize-small.h: Regenerate.
119 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
121 * src/atomic_ops/sysdeps/sunc/x86.h (AO_fetch_and_add_full,
122 AO_char_fetch_and_add_full, AO_short_fetch_and_add_full, AO_or_full,
123 AO_test_and_set_full,
124 AO_compare_and_swap_full): Use "+m" asm constraint for *addr instead
125 of "=m" (because the value pointed by addr is read and written by the
128 2013-03-13 Ivan Maidanski <ivmai@mail.ru>
130 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Use "+m"
131 asm constraint for *addr instead of "=m" (because the value pointed by
132 addr is read and written by the code).
134 2013-03-12 Ivan Maidanski <ivmai@mail.ru>
136 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap): Use "+m"
137 asm constraint for *addr instead of "+R" (the letter is unsupported
138 by clang3.1 resulting in "invalid output constraint in asm" error).
140 2013-02-14 Ivan Maidanski <ivmai@mail.ru>
142 * src/atomic_ops/sysdeps/gcc/arm.h: Do not include read_ordered.h
143 (because load_acquire should contain a DMB instruction in a multi-core
144 case, new load_acquire/read primitives implementation is generalized
145 using nop_full/read which either contain a DMB instruction, or is just
146 a compiler barrier for uniprocessor).
147 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Likewise.
148 * src/atomic_ops/sysdeps/msftc/arm.h: Likewise.
150 2013-01-15 Ivan Maidanski <ivmai@mail.ru>
152 * doc/README.txt (_acquire_read): Add information about memory
153 barrier (similar as in atomic_ops.h).
154 * doc/README.txt (_release_read): Remove information about
155 non-existing barrier.
157 2013-01-14 Ivan Maidanski <ivmai@mail.ru>
159 * src/atomic_ops/sysdeps/ao_t_is_int.h: Fix a typo in comment.
161 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
163 * src/atomic_ops/sysdeps/ao_t_is_int.h
164 (AO_int_load_acquire, AO_int_fetch_and_add_full,
165 AO_int_fetch_and_add1_acquire, AO_int_fetch_and_add1_release,
166 AO_int_fetch_and_sub1_acquire, AO_int_fetch_and_sub1_release): Cast
167 result to unsigned int instead of signed int.
169 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
171 * src/atomic_ops/sysdeps/gcc/s390.h: Move include of
172 ordered_except_wr.h down to be after all_aligned_atomic_load_store.h
173 inclusion (since the latter defines AO_X_load/store primitives used by
176 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
178 * src/atomic_ops/sysdeps/msftc/arm.h: Fix a typo in comment (about
181 2013-01-07 Ivan Maidanski <ivmai@mail.ru>
183 * src/atomic_ops/sysdeps/read_ordered.h (AO_char_load_read,
184 AO_short_load_read, AO_int_load_read): Change return type (and the
185 type of "result" local variable) from AO_t to the type matching the
186 name of the function (i.e., unsigned char/short/int, respectively).
188 2013-01-06 Ivan Maidanski <ivmai@mail.ru>
190 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Insert
191 AO_compiler_barrier for AO_UNIPROCESSOR case.
192 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Likewise.
193 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Likewise.
194 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Refine comment.
196 2013-01-05 Ivan Maidanski <ivmai@mail.ru>
198 * src/atomic_ops/Makefile.in: Regenerate (by autoreconf -vif).
200 2013-01-04 Ivan Maidanski <ivmai@mail.ru>
202 * src/atomic_ops/Makefile.am (BUILT_SOURCES): Define to force
203 regeneration of generalize-small.h (if the corresponding
204 source template is changed) before compilation of .c files (that use
207 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
209 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
210 Add missed definition based on CAS.
211 * src/atomic_ops/generalize-small.h: Regenerate.
213 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
215 * src/atomic_ops/generalize-small.template (AO_XSIZE_load): Move
216 definition (which is based on AO_XSIZE_load_acquire) down to be after
217 AO_XSIZE_load_acquire definition.
218 * src/atomic_ops/generalize-small.template (AO_XSIZE_store): Move
219 definition (which is based on AO_XSIZE_store_release) down to be after
220 AO_XSIZE_store_release definition.
221 * src/atomic_ops/generalize-small.h : Regenerate.
223 2012-10-09 Ivan Maidanski <ivmai@mail.ru>
225 * tests/test_stack.c (run_one_test): Change type of "index" local
226 variable from long to int to match printf format specifier (when
227 VERBOSE defined); cast from "arg" pointer to integer via size_t (to
228 avoid 64-bit compiler warning).
230 2012-10-08 Ivan Maidanski <ivmai@mail.ru>
232 * src/atomic_ops/sysdeps/gcc/x86.h (AO_double_compare_and_swap_full):
233 New function (only if __x86_64__) implemented using GCC built-in
234 __sync CAS primitive available for x32.
235 * src/atomic_ops/sysdeps/gcc/x86.h
236 (AO_HAVE_double_compare_and_swap_full): New macro (for x32 only).
237 * src/atomic_ops/sysdeps/gcc/x86.h
238 (AO_compare_double_and_swap_double_full): Implement using
239 double_compare_and_swap_full instead of cmpxchg8b for x32 (since
240 x86_64 has cmpxchg and cmpxchg16b but not cmpxchg8b).
242 2012-10-05 Ivan Maidanski <ivmai@mail.ru>
244 * src/atomic_ops.h: Fix typos in comments (update generalize.h
247 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
249 * src/atomic_ops.c (AO_pause): Fix millis value (passed to Win32
250 Sleep) for the case of 'n' argument in range between 12 and 21,
251 inclusive if AO_USE_WIN32_PTHREADS (sleep for 1 ms in this case).
252 * src/atomic_ops_stack.c (AO_pause): Evaluate 'msecs' value using the
253 same algorithm as in atomic_ops.c (Win32 only).
255 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
257 * src/atomic_ops_stack.c (dummy): Define as static (to make symbol
258 without AO_ prefix visible only within this file); initialize to 1
259 (same as in atomic_ops.c, so that AO_spin would never really alter
262 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
264 * src/atomic_ops.h: Fix 'load' primitive name in comment (replace
265 AO_load_release_read with AO_load_acquire_read).
267 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
269 * src/atomic_ops/sysdeps/emul_cas.h
270 (AO_compare_double_and_swap_double_full): Test (define if)
271 AO_HAVE_compare_double_and_swap_double_full macro instead of
272 AO_HAVE_compare_double_and_swap_double.
274 2012-10-01 Ivan Maidanski <ivmai@mail.ru>
276 * src/atomic_ops/sysdeps/standard_ao_double_t.h (double_ptr_storage):
277 Define as "unsigned long long" instead of __m128 for gcc/x32 (i.e.,
278 ILP32 on x86_64); update and reformat comment.
280 2012-09-19 Ivan Maidanski <ivmai@mail.ru>
282 * configure: Regenerate (by autoreconf -vif using autoconf-2.68,
283 automake-1.11.3 and libtool-2.4.2).
285 * Makefile.in: Likewise.
286 * aclocal.m4: Likewise.
288 * config.guess: Likewise.
289 * config.sub: Likewise.
291 * doc/Makefile.in: Likewise.
292 * install-sh: Likewise.
294 * src/Makefile.in: Likewise.
295 * src/atomic_ops/Makefile.in: Likewise.
296 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
297 * tests/Makefile.in: Likewise.
299 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
301 * src/atomic_ops.h: Include gcc/x86.h instead of gcc/x86_64.h if
302 gcc/x32 (i.e., GCC (or Intel compiler), __x86_64__ is defined, and
303 __ILP32__ is defined) to have AO_compare_double_and_swap_double_full
304 defined properly (based on cmpxchg8b); explicitly define
305 AO_USE_PENTIUM4_INSTRS for gcc/x32.
306 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove ILP32-specific code
307 (AO_T_IS_INT definition).
309 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
311 * src/atomic_ops/sysdeps/sunc/x86_64.h
312 (AO_compare_double_and_swap_double_full): Fix inline assembly
313 arguments commenting out "m"(*addr) one (similar to that in
314 sunc/x86.h) if AO_CMPXCHG16B_AVAILABLE defined.
316 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
318 * src/atomic_ops/sysdeps/gcc/x86_64.h
319 (AO_compare_double_and_swap_double_full): Fix a typo in comment.
320 * src/atomic_ops/sysdeps/sunc/x86_64.h
321 (AO_compare_double_and_swap_double_full): Likewise.
323 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
325 * tests/test_atomic.c (acqrel_thr): Call abort() after fprintf(stderr).
326 * tests/test_malloc.c (run_one_test): Likewise.
327 * tests/test_stack.c (check_list, main): Likewise.
329 2012-09-05 Ivan Maidanski <ivmai@mail.ru>
331 * src/atomic_ops/sysdeps/gcc/x86.h
332 (AO_compare_double_and_swap_double_full): Re-implement for PIC mode
333 saving EBX to a local variable (instead of pushing it to stack) and
334 saving memory operand address to a register (edi which is manually
335 preserved), so that the whole code could also work even if EBX points
336 to memory operand (e.g., in Clang); test __PIC__ using ifdef (instead
337 of "if"); update comments; reformat code.
341 2012-08-09 Ivan Maidanski <ivmai@mail.ru>
343 * README: Change version to 7.2d (rev. D).
345 2012-08-01 Ivan Maidanski <ivmai@mail.ru>
347 * src/atomic_ops.h (AO_compiler_barrier): Add parentheses and cast to
350 2012-07-12 Ivan Maidanski <ivmai@mail.ru>
352 * config.guess: Regenerate (by autoreconf -vif using autoconf-2.68,
353 automake-1.11.1 and libtool-2.4).
354 * config.sub: Likewise.
356 2012-07-04 Ivan Maidanski <ivmai@mail.ru>
358 * src/atomic_ops/sysdeps/gcc/x86.h
359 (AO_compare_double_and_swap_double_full): Use EDI register for
360 "new_val1" argument in PIC mode only for GCC 4.3+ to workaround
361 a problem with older compiler versions (e.g., GCC 4.2.1 [FreeBSD])
362 that do not recognize 'D' as a valid register specification; update
365 2012-07-01 Ivan Maidanski <ivmai@mail.ru>
367 * src/atomic_ops/generalize-small.template
368 (AO_XSIZE_fetch_and_add_full,
369 AO_XSIZE_fetch_and_add_acquire, AO_XSIZE_fetch_and_add_release):
370 Fix type of function result by adding
371 'unsigned' to XCTYPE.
372 * src/atomic_ops/generalize-small.h: Regenerate.
376 2012-05-11 Ivan Maidanski <ivmai@mail.ru>
378 * configure.ac, README: Bump version to 7.2 (final).
379 * configure: Regenerate.
381 2012-05-01 H.J. Lu <hjl.tools@gmail.com>
383 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_fetch_and_add_full,
384 AO_and_full, AO_or_full, AO_xor_full, AO_compare_and_swap_full):
385 Remove 'q' suffix in asm instruction.
387 2012-04-16 H.J. Lu <hjl.tools@gmail.com>
389 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_T_IS_INT): Defined
392 2012-03-28 Ivan Maidanski <ivmai@mail.ru>
394 * configure.ac (PICFLAG): Adjust AC_MSG_CHECKING message; report
395 "none" result if no -fPIC is needed (for Cygwin/MinGW); determine
396 whether GCC -fPIC option causes __PIC__ macro definition; pass
397 -D __PIC__ to PICFLAG (instead of CFLAGS) only if not defined
398 automatically in case -fPIC specified; update comment.
400 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
402 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Do not use __m128
403 if GCC pre-v4 (at least, xmmintrin.h is missing in gcc-3.4.3-x86_64
404 included in Solaris 10 distribution).
406 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
408 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Fix a typo in
411 2012-03-19 Ivan Maidanski <ivmai@mail.ru>
413 * configure: Regenerate.
414 * Makefile.in: Likewise.
416 2011-08-14 Petter Urkedal <paurkedal@gmail.com>
418 * atomic_ops.pc.in -> pkgconfig/atomic_ops.pc.in: Moved.
419 * pkgconfig/atomic_ops-uninstalled.pc.in: Added developer version.
420 * configure.ac, Makefile.am: Update accordingly.
422 2011-08-04 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
424 * atomic_ops.pc.in: new file.
425 * Makefile.am (pkgconfigdir, pkgconfig_DATA): new items.
426 * configure.ac (AC_CONFIG_FILES): add atomic_ops.pc.
427 * configure, Makefile.in: Regenerate.
429 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
431 * src/atomic_ops/sysdeps/gcc/x86.h
432 (AO_compare_double_and_swap_double_full): Use EDI register for
433 "new_val1" argument instead of a memory operand and use XCHG assembler
434 instruction instead of push/pop in case of PIC mode (to workaround
435 a bug in GCC 4.6.1); update the comment.
437 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
439 * src/atomic_ops_stack.c (AO_stack_push_release): Make "cptr" local
440 variable volatile to workaround a bug in clang-1.1/x86 compiler; add
443 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
445 * src/atomic_ops/sysdeps/gcc/x86.h
446 (AO_compare_double_and_swap_double_full): Fix argument name in the
448 * src/atomic_ops/sysdeps/sunc/x86.h
449 (AO_compare_double_and_swap_double_full): Likewise.
451 2012-03-04 Ivan Maidanski <ivmai@mail.ru>
453 * src/atomic_ops_malloc.h (AO_malloc_enable_mmap): Fix a typo in the
456 2012-01-19 Ivan Maidanski <ivmai@mail.ru>
458 * tests/test_atomic.c (main): Put "void" keyword into the arguments
459 specification of the function prototype.
460 * tests/test_stack.c (main): Likewise.
462 2011-12-16 Ivan Maidanski <ivmai@mail.ru>
464 * src/atomic_ops/sysdeps/gcc/arm.h (__ARM_ARCH_7__, __ARM_ARCH_7A__):
465 Recognize to override __ARM_ARCH_5xx__ macros (since Android NDK GCC
466 defines both for armv7); update comment.
468 2011-11-29 Ivan Maidanski <ivmai@mail.ru>
470 * src/atomic_ops/sysdeps/gcc/hexagon.h: Include generalize.h file
471 before ao_t_is_int.h one.
472 * src/atomic_ops/sysdeps/gcc/ia64.h: Likewise.
473 * src/atomic_ops/sysdeps/hpc/ia64.h: Likewise.
475 2011-11-03 Ivan Maidanski <ivmai@mail.ru>
477 * src/atomic_ops/generalize-small.template
478 (AO_XSIZE_fetch_and_add_full, AO_XSIZE_fetch_and_add_acquire,
479 AO_XSIZE_fetch_and_add_release): Change return type from AO_t to
481 * src/atomic_ops/generalize-small.h: Regenerate.
483 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
485 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap_full):
486 Change "result" local variable type from AO_t to int.
487 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_compare_and_swap_full):
490 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
492 * tests/test_atomic_include.h: Regenerate.
494 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
496 * tests/test_atomic_include.template (test_atomicXX): Add action for
497 the missing AO_compare_and_swap primitive.
499 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
501 * src/atomic_ops.c (init_lock): Define only unless AO_USE_NO_SIGNALS.
503 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
505 * doc/README.txt: Fix a typo.
507 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
509 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Cast
510 returned value to int.
512 2011-10-17 Ivan Maidanski <ivmai@mail.ru>
514 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
516 2011-10-17 Ivan Maidanski <ivmai@mail.ru> (really Thorsten Glaser)
518 * src/atomic_ops/sysdeps/gcc/m68k.h (AO_test_and_set_full): Cast the
521 2011-10-15 Ivan Maidanski <ivmai@mail.ru>
523 * src/atomic_ops/sysdeps/gcc/s390.h (AO_compare_and_swap_full):
524 Change return from AO_t to int.
525 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_compare_and_swap_acquire,
526 AO_compare_and_swap_release, AO_compare_and_swap_full): Likewise.
528 2011-10-11 Ivan Maidanski <ivmai@mail.ru> (really Linas Vepstas)
530 * src/atomic_ops/sysdeps/Makefile.am (nobase_private_HEADERS): Add
532 * src/atomic_ops.h: Include hexagon.h file.
533 * src/atomic_ops/sysdeps/gcc/hexagon.h: New file.
535 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
538 (AO_non_posix_implementation_is_entirely_in_headers): Make external.
540 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
542 * configure: Regenerate.
543 * tests/Makefile.in: Ditto.
544 * tests/test_atomic_include.h: Ditto.
546 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
548 * configure.ac (PICFLAG, THREADDLLIBS): Define as empty for MinGW.
549 * configure.ac (have_pthreads): New definition (set to true unless
551 * configure.ac (HAVE_PTHREAD_H): New AM conditional (based on
552 have_pthreads value).
553 * tests/Makefile.am (test_atomic_pthreads_SOURCES,
554 test_atomic_pthreads_CPPFLAGS, test_atomic_pthreads_LDADD): Define
555 only if HAVE_PTHREAD_H.
556 * tests/Makefile.am (TESTS): Don't include test_atomic_pthreads unless
558 * tests/Makefile.am (check_PROGRAMS): Define to TESTS value.
560 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
562 * configure.ac (PICFLAG): Set to -fPIC if GCC but not Gygwin.
564 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
566 * tests/test_malloc.c (LIST_LENGTH, LARGE_OBJ_SIZE): Define to
567 a smaller value unless HAVE_MMAP.
569 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
571 * tests/test_malloc.c (cons, run_one_test): Call exit with a non-zero
572 code (instead of abort) if out of memory.
573 * tests/test_stack.c (add_elements): Likewise.
574 * tests/test_stack.c (main): Use a distinct exit code if a thread
577 2011-09-15 Ivan Maidanski <ivmai@mail.ru>
579 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo (replace AO_FORCE_CAS
580 with AO_REQUIRE_CAS in a comment).
582 2011-09-08 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
584 * src/Makefile.am, tests/Makefile.am: Set compiler include paths
585 to $(top_builddir)/src and $(top_srcdir)/src.
586 * src/Makefile.in: Regenerate.
587 * tests/Makefile.in: Ditto.
589 2011-07-14 Ivan Maidanski <ivmai@mail.ru>
591 * tests/list_atomic.template (list_atomicXX): Remove "addr" local
592 variable (use "&val" instead); initialize "newval" and "oldval"
593 local variables; rename "tsaddr" local variable to "ts" one.
594 * tests/list_atomic.template (list_atomicXX): Fix
595 AO_test_and_setXX call (pass address instead of value).
596 * tests/list_atomic.template: Expand all tabs to spaces; remove
597 trailing spaces at EOLn.
598 * tests/run_parallel.inc: Ditto.
599 * tests/test_atomic.c: Ditto.
600 * tests/list_atomic.c: Regenerate.
601 * tests/run_parallel.inc (AO_PTRDIFF_T): New macro.
602 * tests/run_parallel.inc (tramp): Cast between pointer and integer
603 types via casting to AO_PTRDIFF_T.
604 * tests/test_atomic.c (add1sub1_thr, acqrel_thr): Ditto.
605 * tests/run_parallel.inc (run_parallel): Adjust printf format
606 specifiers for DWORD parameters.
607 * tests/test_stack.c: Skip test if no pthreads.
609 2011-06-27 Ivan Maidanski <ivmai@mail.ru> (really Jeremy Huddleston)
611 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
612 Explicitly cast 0xff to unsigned char (otherwise LLVM v2.7 GAS
613 reports an error); don't recognize AO_XCHGB_RET_WORD.
614 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
617 2011-06-15 Ivan Maidanski <ivmai@mail.ru>
619 * configure.ac, README: Change to version 7.2alpha7.
620 * configure: Regenerate.
624 2011-06-14 Ivan Maidanski <ivmai@mail.ru>
626 * configure.ac, README: Change to version 7.2alpha6.
627 * configure: Regenerate.
629 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
631 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_load): Do not
632 define for pre-ARMv6 directly (revert part of the previous
634 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set,
635 AO_test_and_set_full): Refine the comment.
636 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Define
637 SWP-based implementation at the end of file (if none of
638 AO_test_and_set functions are defined previously).
639 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Remove
640 SWP-based implementation (revert part of the previous commit).
641 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store): Remove redundant
642 definition at the file end (revert part of the previous commit).
644 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
646 * src/atomic_ops/sysdeps/gcc/arm.h: Handle ARMv6M architecture.
647 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Force "swp"
648 instruction usage (instead of ldrex/strex) if AO_FORCE_USE_SWP;
650 * src/atomic_ops/sysdeps/gcc/arm.h
651 (AO_compare_double_and_swap_double): Handle ARMv7EM architecture
653 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set, AO_nop_full,
654 AO_load, AO_store): Define at the end of file (in case not defined
657 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
659 * src/atomic_ops/generalize.h: Reformat code.
660 * src/atomic_ops/generalize.h (AO_test_and_set_acquire): Fix
662 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_test_and_set): Ditto.
663 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Ditto.
664 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Add
665 a comment (about SWP instruction).
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): Use single-digit labels (to workaround
671 a bug in GCC v4.2.1 which reports "garbage following instruction"
673 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Use "IT"
674 instruction only for Thumb-2 mode.
676 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
678 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
679 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define as empty
681 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
682 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
683 AO_compare_and_swap, AO_compare_double_and_swap_double): Remove
684 unnecessary "memory" keyword from the list of clobbered registers
685 (revert part of the previous commit).
686 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Add
687 a comment for "IT" instruction.
688 * src/atomic_ops/sysdeps/gcc/arm.h
689 (AO_compare_double_and_swap_double): Don't define on the
690 architectures where unimplemented; add a comment; replace return
691 (in the loop) statement with break.
693 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
695 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
696 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define new
697 macro (to switch temporarily CPU mode to ARM in inline assembler
698 if compiling in the Thumb mode and to restore it back on leave).
699 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_store,
700 AO_test_and_set, AO_fetch_and_add, AO_fetch_and_add1,
701 AO_fetch_and_sub1, AO_compare_and_swap, AO_test_and_set_full):
702 Enable compilation in the Thumb mode (use AO_THUMB_GO_ARM,
703 AO_THUMB_RESTORE_MODE and AO_THUMB_SWITCH_CLOBBERS macros).
704 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
705 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
706 AO_compare_and_swap, AO_compare_double_and_swap_double): Add
707 "memory" to the list of clobbered registers.
709 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
711 * src/atomic_ops/sysdeps/gcc/arm.h: Reformat code.
712 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
713 AO_test_and_set_full): Add assembler comment containing the
716 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
718 * tests/test_malloc.c (run_one_test): Test AO_malloc() result
719 (if out of memory then print the message and abort).
720 * tests/test_stack.c (add_elements): Ditto.
722 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
724 * src/atomic_ops/generalize.h (AO_HAVE_or_full): Add missing
726 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_HAVE_nop_write):
728 * src/atomic_ops/sysdeps/read_ordered.h (AO_HAVE_nop_read): Ditto.
729 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_store_release):
732 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
734 * src/atomic_ops/generalize-small.template
735 (AO_HAVE_XSIZE_fetch_and_add_full): Add missing definition.
736 * src/atomic_ops/generalize-small.template: Reformat code.
737 * src/atomic_ops/generalize-small.h: Regenerate.
739 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
741 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Remove
742 blank line between AO_func and AO_HAVE_func definitions.
743 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
744 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
745 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
746 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
747 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
748 * src/atomic_ops/sysdeps/ordered.h: Ditto.
749 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
750 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
751 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
752 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
753 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
754 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
755 * src/atomic_ops/sysdeps/gcc/cris.h: Ditto.
756 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
757 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
758 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
759 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
760 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
761 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
762 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
763 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
764 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
765 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
766 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
767 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
768 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
769 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
770 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
771 * src/atomic_ops/sysdeps/sunc/sparc.h: Ditto.
772 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
773 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
774 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Reformat
776 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
777 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
778 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
779 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
780 * src/atomic_ops/sysdeps/ordered.h: Ditto.
781 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
782 * src/atomic_ops/sysdeps/test_and_set_t_is_char.h: Remove file
784 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Don't
786 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire,
787 AO_test_and_set, AO_compare_and_swap): Merge adjacent definitions.
788 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_store_release):
790 * src/atomic_ops/sysdeps/sunc/sparc.h: Expand all tabs to spaces;
791 remove trailing spaces at EOLn.
793 2011-06-02 Ivan Maidanski <ivmai@mail.ru>
795 * tests/test_malloc.c (main): Remove unused "exper_n" local
797 * tests/test_stack.c (run_one_test): Remove unused "aux" local
800 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
802 * src/atomic_ops/sysdeps/gcc/arm.h
803 (AO_compare_double_and_swap_double,
804 AO_HAVE_compare_double_and_swap_double): Define only starting from
806 * src/atomic_ops/sysdeps/gcc/arm.h
807 (AO_compare_double_and_swap_double): Fix function name in
808 assembler code; replace while (1) loop with "do-while".
810 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
812 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full):
813 Specify "%b0" (instead of "%0") in "xchg" instruction (to
814 workaround a bug in Sun C 5.11).
815 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
818 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
820 * src/atomic_ops_malloc.c (AO_malloc_enable_mmap): Workaround for
821 Sun C compiler (call "release" variant of AO_store).
823 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
825 * configure.ac (_PTHREADS): New template (used for NetBSD).
826 * configure.ac (THREADDLLIBS): New macro.
827 * tests/Makefile.am (test_atomic_LDADD, test_stack_LDADD,
828 test_atomic_pthreads_LDADD, test_malloc_LDADD): Use THREADDLLIBS
829 instead of "-lpthread".
830 * configure: Regenerate.
831 * Makefile.in: Ditto.
832 * doc/Makefile.in: Ditto.
833 * src/Makefile.in: Ditto.
834 * src/atomic_ops/Makefile.in: Ditto.
835 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
836 * src/config.h.in: Ditto.
837 * tests/Makefile.in: Ditto.
839 2011-05-30 Ivan Maidanski <ivmai@mail.ru>
841 * configure.ac (PIC): Add workaround for GCC v3.4.6 which does not
842 define the corresponding macro.
843 * configure.ac: Don't check for GCC twice.
844 * configure: Regenerate.
845 * tests/test_malloc.c (DEFAULT_NTHREADS): New macro.
846 * tests/test_malloc.c (run_one_test): Refine printed message (in
848 * tests/test_malloc.c (main): Use DEFAULT_NTHREADS.
849 * tests/test_stack.c (main): Cast AO_stack_pop() returned pointer.
850 * src/atomic_ops_malloc.c (USE_MMAP_ANON, GC_MMAP_FLAGS,
851 OPT_MAP_ANON): New macro.
852 * src/atomic_ops_malloc.c (get_mmaped): Pass -1 (instead of 0) as
853 file descriptor to mmap() if MAP_ANONYMOUS (same as for MAP_ANON).
854 * src/atomic_ops_malloc.c (get_mmaped): Use USE_MMAP_ANON,
855 GC_MMAP_FLAGS and OPT_MAP_ANON macros; reformat code; check open()
858 2011-05-11 Ivan Maidanski <ivmai@mail.ru>
860 * tests/test_malloc.c: Expand all tabs to spaces; remove trailing
862 * tests/test_malloc.c (LENGTH, LARGE): Rename to LIST_LENGTH and
863 LARGE_OBJ_SIZE, respectively.
864 * tests/test_malloc.c (MAX_NTHREADS, N_REVERSALS, LIST_LENGTH,
865 LARGE_OBJ_SIZE): Do not define unless undefined.
866 * tests/test_malloc.c (run_one_test): Recognize DEBUG_RUN_ONE_TEST
869 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
871 * tests/Makefile.am (EXTRA_DIST): Add list_atomic.c; update
873 * tests/Makefile.am (CLEANFILES): Remove test_atomic_include.h,
875 * tests/Makefile.am: Remove trailing spaces at EOLn.
876 * tests/Makefile.in: Regenerate.
878 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
880 * tests/test_stack.c (MAX_NTHREADS, N_EXPERIMENTS): Do not define
882 * tests/test_stack.c: Expand all tabs to spaces.
883 * tests/test_atomic_include.h: Ditto.
884 * tests/test_stack.c (main): Free pop'ed elements.
885 * tests/test_atomic_include.h (test_atomic, test_atomic_release,
886 test_atomic_acquire, test_atomic_read, test_atomic_write,
887 test_atomic_full, test_atomic_release_write,
888 test_atomic_acquire_read): Remove prototype.
890 2011-04-22 Ivan Maidanski <ivmai@mail.ru>
892 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_MASK): Add "volatile" for
893 asm; remove redundant trailing ';'.
895 2011-04-11 Ivan Maidanski <ivmai@mail.ru> (really Jim Meyering)
897 * doc/README.txt: Remove doubled words in comments.
899 2011-03-18 Ivan Maidanski <ivmai@mail.ru>
901 * src/atomic_ops/sysdeps/gcc/arm.h: Test for all the known pre-v6
902 ARM chips instead of all the currently existing v6+ ones.
904 2011-03-13 Ivan Maidanski <ivmai@mail.ru>
906 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo in a comment;
907 expand all tabs to spaces.
908 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
909 Recognize AO_XCHGB_RET_WORD new macro (to workaround a bug).
910 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
913 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
915 * src/atomic_ops.c: Include sys/time.h (to get timespec) for NaCl.
916 * src/atomic_ops_malloc.c (msb): Do the shift by 32 only once (in
917 a conditional expression) to prevent a compiler warning.
918 * src/atomic_ops_malloc.c: Expand all tabs to spaces; remove
919 trailing spaces at EOLn.
921 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
923 * src/atomic_ops.c: Explicitly define AO_USE_NO_SIGNALS and
924 AO_USE_NANOSLEEP for NaCl.
926 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
928 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
929 automake-1.11.1 and libtool-2.4).
932 2011-02-09 Ivan Maidanski <ivmai@mail.ru>
934 * src/atomic_ops.c (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): New
936 * src/atomic_ops.c (AO_USE_WIN32_PTHREADS): Imply
938 * src/atomic_ops.c: Don't include signal.h if AO_USE_NO_SIGNALS.
939 * src/atomic_ops.c: Include time.h if AO_USE_NANOSLEEP.
940 * src/atomic_ops.c (AO_locks, AO_pause): Reformat the code.
941 * src/atomic_ops.c (AO_pause): Use nanosleep() if
943 * src/atomic_ops.c (all_sigs, initialized,
944 AO_compare_and_swap_emulation,
945 AO_compare_double_and_swap_double_emulation): Use
946 AO_USE_NO_SIGNALS instead of AO_USE_WIN32_PTHREADS.
948 2011-01-07 Ivan Maidanski <ivmai@mail.ru>
950 * src/.cvsignore: Add more auto-generated files.
951 * tests/.cvsignore: Ditto.
952 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full, AO_store,
953 AO_compare_double_and_swap_double): Reformat code.
954 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
955 AO_compare_double_and_swap_double): Ditto.
956 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
957 Produce "it eq" instruction only for Thumb mode.
958 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
960 2010-11-23 Ivan Maidanski <ivmai@mail.ru> (really Michael Hope)
962 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
963 Insert "it eq" just before "strexeq" (required for Thumb-2 mode,
964 ignored in ARM mode).
965 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
967 2010-09-15 Ivan Maidanski <ivmai@mail.ru> (with input from Gregory Farnum)
969 * src/atomic_ops.h: Include armcc/arm_v6.h if __ARMCC__.
970 * src/atomic_ops.h: Include ibmc/powerpc.h if __IBMC__.
971 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if msftc/arm.h is
973 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if AO_CAN_EMUL_CAS
974 is defined but emul_cas.h has not been included.
975 * src/atomic_ops/sysdeps/gcc/arm.h: Fix a typo.
977 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
979 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
980 automake-1.11.1 and libtool-2.2.8).
983 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
985 * src/atomic_ops/sysdeps/gcc/arm.h: Replace C++ style comment
988 2010-05-30 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
990 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Use
991 "register long" (instead of "int") for "ret" variable.
992 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Replace
993 with AO_test_and_set_full (same for AO_HAVE_test_and_set).
994 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_compare_and_swap_full):
995 New function implemented.
997 2010-05-22 Ivan Maidanski <ivmai@mail.ru>
999 * src/atomic_ops/sysdeps/Makefile.am (nobase_sysdep_HEADERS):
1001 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1003 2010-05-21 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
1005 * src/atomic_ops.h: Recognize __avr32__ (include gcc/avr32.h).
1006 * src/atomic_ops/sysdeps/gcc/avr32.h: New file.
1008 2010-04-29 Ivan Maidanski <ivmai@mail.ru>
1010 * doc/README_malloc.txt: Fix a typo.
1011 * doc/README_stack.txt: Ditto.
1013 2010-02-25 Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
1015 * .cvsignore: New file.
1016 * doc/.cvsignore: Ditto.
1017 * src/.cvsignore: Ditto.
1018 * src/atomic_ops/.cvsignore: Ditto.
1019 * src/atomic_ops/sysdeps/.cvsignore: Ditto.
1020 * tests/.cvsignore: Ditto.
1022 2010-02-19 Ivan Maidanski <ivmai@mail.ru> (mostly really Patrick Marlier)
1024 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full):
1025 Use __sync_bool_compare_and_swap() if AO_USE_SYNC_CAS_BUILTIN.
1026 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1028 * src/atomic_ops.h (AO_USE_SYNC_CAS_BUILTIN): New macro defined
1029 if GCC v4.2+ or Intel compiler v11.1+ (only for amd64).
1030 * src/atomic_ops.h: Include GCC-specific sysdeps files for Intel
1031 compiler in GCC compatible mode (only for x86 and amd64).
1033 2010-02-18 Ivan Maidanski <ivmai@mail.ru>
1035 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Don't check
1036 for AO_USE_PENTIUM4_INSTRS (since "mfence" (SSE2) is supported on
1037 all x86_64/amd64 chips); remove the comment.
1038 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1039 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Define only
1040 if AO_ASM_X64_AVAILABLE.
1041 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1042 Use built-in __sync_bool_compare_and_swap() if GCC v4.2+.
1044 2010-02-17 Ivan Maidanski <ivmai@mail.ru> (really Patrick Marlier)
1046 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full,
1047 AO_compare_double_and_swap_double_full): Use EAX for the result
1048 since cmpxchg clobbers it.
1049 * src/atomic_ops/sysdeps/sunc/x86.h (AO_compare_and_swap_full,
1050 AO_compare_double_and_swap_double_full): Ditto.
1051 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full,
1052 AO_compare_double_and_swap_double_full): Ditto.
1053 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_compare_and_swap_full,
1054 AO_compare_double_and_swap_double_full): Ditto.
1056 2010-02-04 Ivan Maidanski <ivmai@mail.ru>
1058 * doc/Makefile.in: Regenerate.
1060 2010-02-04 Ivan Maidanski <ivmai@mail.ru> (really Ian Wienand)
1062 * doc/Makefile.am: Remove duplicate file in the list.
1064 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1066 * ChangeLog: Fix some typos.
1068 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1070 * src/atomic_ops_stack.c (AO_stack_push_explicit_aux_release):
1071 Define "i" variable only if used (to suppress a compiler warning).
1073 2010-02-02 Ivan Maidanski <ivmai@mail.ru>
1075 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full): Fix
1076 "xchg" data size (remove "l" suffix).
1077 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
1079 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full): Use
1081 * src/atomic_ops/sysdeps/sunc/x86.h
1082 (AO_compare_double_and_swap_double_full,
1083 AO_HAVE_compare_double_and_swap_double_full): Comment out (since
1084 not tested, might be wrong, and tickles a bug in some Sun CC
1085 versions; besides, __PIC__ macro is never predefined by Sun CC).
1087 2010-01-29 Ivan Maidanski <ivmai@mail.ru>
1089 * INSTALL: Regenerate (by autoreconf -vif using libtool-2.2.6b,
1090 automake-1.11.1, autoconf-2.65).
1091 * Makefile.in: Ditto.
1092 * aclocal.m4: Ditto.
1094 * config.guess: Ditto.
1095 * config.sub: Ditto.
1098 * install-sh: Ditto.
1100 * mkinstalldirs: Ditto.
1101 * doc/Makefile.in: Ditto.
1102 * src/Makefile.in: Ditto.
1103 * src/atomic_ops/Makefile.in: Ditto.
1104 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1105 * src/config.h.in: Ditto.
1106 * tests/Makefile.in: Ditto.
1108 2009-12-19 Ivan Maidanski <ivmai@mail.ru>
1110 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_lwsync): Redirect to
1111 AO_sync() if __NO_LWSYNC__ (same as for gcc/powerpc.h).
1113 2009-12-17 Ivan Maidanski <ivmai@mail.ru> (really Emmanuel Stapf)
1115 * src/atomic_ops.h: Recognize _M_X64 (as an alias for _AMD64_).
1117 2009-12-04 Ivan Maidanski <ivmai@mail.ru>
1119 * configure.ac, README: Change to version 7.2alpha5.
1120 * configure: Regenerate.
1124 2009-12-02 Ivan Maidanski <ivmai@mail.ru>
1126 * configure.ac, README: Change to version 7.2alpha4.
1127 * configure: Regenerate.
1129 2009-12-01 Ivan Maidanski <ivmai@mail.ru>
1131 * configure.ac, README: Change to version 1.3alpha1.
1132 * configure: Regenerate.
1134 2009-11-21 Ivan Maidanski <ivmai@mail.ru> (really Daniel R. Grayson)
1136 * configure.ac (AC_CONFIG_COMMANDS): Quote PICFLAG, CC, DEFS
1138 * configure: Regenerate.
1140 2009-10-06 Ivan Maidanski <ivmai@mail.ru>
1142 * src/atomic_ops/sysdeps/gcc/sh.h: Remove commented out AO_TS_SET
1145 2009-10-05 Ivan Maidanski <ivmai@mail.ru>
1147 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1149 2009-10-05 Ivan Maidanski <ivmai@mail.ru> (really Takashi YOSHII)
1151 * src/atomic_ops/sysdeps/gcc/sh.h: New file.
1152 * src/atomic_ops.h: Include gcc/sh.h if __arm__.
1153 * src/atomic_ops/sysdeps/Makefile.am: Add gcc/sh.h entry.
1155 2009-10-02 Ivan Maidanski <ivmai@mail.ru>
1157 * src/atomic_ops/sysdeps/Makefile.am: Add armcc/arm_v6.h,
1158 msftc/arm.h, msftc/common32_defs.h, sunc/x86.h sunc/x86_64.h
1159 entries; order all entries alphabetically.
1160 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1162 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1164 * aclocal.m4: Regenerate (by autoreconf -vif using libtool-2.2,
1165 automake-1.10.2, autoconf-2.64).
1167 * Makefile.in: Ditto.
1168 * aclocal.m4: Ditto.
1169 * config.guess: Ditto.
1170 * config.sub: Ditto.
1173 * install-sh: Ditto.
1175 * mkinstalldirs: Ditto.
1176 * doc/Makefile.in: Ditto.
1177 * src/config.h.in: Ditto.
1178 * src/Makefile.in: Ditto.
1179 * src/atomic_ops/Makefile.in: Ditto.
1180 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1181 * tests/Makefile.in: Ditto.
1183 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1185 * src/atomic_ops/sysdeps/gcc/x86.h: Remove spaces preceding '#'
1186 for the preprocessor directives.
1187 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1189 2009-09-30 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1191 * README: Move notes from the hand-edited part of INSTALL which
1192 was overwritten by Automake recently.
1194 2009-09-26 Ivan Maidanski <ivmai@mail.ru>
1196 * aclocal.m4: Regenerate (by autoreconf -vif).
1197 * config.guess: Ditto.
1198 * config.sub: Ditto.
1201 * Makefile.in: Ditto.
1202 * doc/Makefile.in: Ditto.
1203 * src/config.h.in: Ditto.
1204 * src/Makefile.in: Ditto.
1205 * src/atomic_ops/Makefile.in: Ditto.
1206 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1207 * tests/Makefile.in: Ditto.
1209 2009-09-25 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1211 * configure.ac: Replace AC_PROG_CC with AM_PROG_CC_C_O.
1213 2009-09-16 Ivan Maidanski <ivmai@mail.ru>
1215 * ChangeLog: Remove trailing spaces at EOLn.
1216 * doc/README.txt: Expand all tabs to spaces; remove trailing
1217 spaces at EOLn; remove multiple trailing blank lines.
1218 * src/atomic_ops.c: Ditto.
1219 * src/atomic_ops.h: Ditto.
1220 * src/atomic_ops/generalize-small.h: Ditto.
1221 * src/atomic_ops/generalize.h: Ditto.
1222 * src/atomic_ops/sysdeps/acquire_release_volatile.h: Ditto.
1223 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Ditto.
1224 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Ditto.
1225 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Ditto.
1226 * src/atomic_ops/sysdeps/ao_t_is_int.h: Ditto.
1227 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Ditto.
1228 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
1229 * src/atomic_ops/sysdeps/char_acquire_release_volatile.h: Ditto.
1230 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
1231 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
1232 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
1233 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
1234 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
1235 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
1236 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
1237 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
1238 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
1239 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
1240 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
1241 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
1242 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
1243 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
1244 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
1245 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
1246 * src/atomic_ops/sysdeps/icc/ia64.h: Ditto.
1247 * src/atomic_ops/sysdeps/int_acquire_release_volatile.h: Ditto.
1248 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
1249 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
1250 * src/atomic_ops/sysdeps/msftc/arm.h: Ditto.
1251 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
1252 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
1253 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1254 * src/atomic_ops/sysdeps/ordered.h: Ditto.
1255 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
1256 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
1257 * src/atomic_ops/sysdeps/short_acquire_release_volatile.h: Ditto.
1258 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
1259 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
1260 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Ditto.
1261 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1262 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1263 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h: Ditto.
1264 * src/atomic_ops_stack.c: Ditto.
1265 * src/atomic_ops_stack.h: Ditto.
1266 * src/atomic_ops/sysdeps/gcc/arm.h: Replace non-ASCII quotes in a
1268 * src/atomic_ops/sysdeps/gcc/mips.h: Use Unix-style EOLn.
1270 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1273 * src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
1274 (regarding memory barrier).
1275 * src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
1276 AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
1277 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
1278 AO_test_and_set): Replace FIXME with the comment saying it is
1279 emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
1280 * src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
1281 using InterlockedCompareExchange() (assuming the latter has a full
1283 * src/atomic_ops/sysdeps/msftc/arm.h: Include
1284 all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
1285 of pre-ARMv6; add the comment.
1287 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1290 * src/atomic_ops/sysdeps/armcc/arm_v6.h
1291 (AO_compare_double_and_swap_double): Replace false/true with 0/1.
1292 * src/atomic_ops/sysdeps/gcc/arm.h
1293 (AO_compare_double_and_swap_double): Ditto.
1294 * src/atomic_ops/sysdeps/gcc/arm.h: Recognize more ARMv6+
1295 predefined macros (6J, 6ZK, 7A, 7M, 7R).
1296 * src/atomic_ops/sysdeps/gcc/arm.h
1297 (AO_compare_double_and_swap_double): Add "cc" clobber to asm.
1298 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_load_acquire):
1299 Correct the name (convert from the lower case).
1300 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_load_acquire):
1302 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_test_and_set,
1303 AO_compare_and_swap): Comment out unimplemented code (and the
1304 corresponding macros); add FIXME.
1305 * src/atomic_ops.c: Recognize AO_USE_WIN32_PTHREADS overriding
1306 _MSC_VER and __MINGW32__ predefined macros (useful for WinCE with
1307 pthreads-w32 library); don't include signal.h, sys/time.h,
1308 sys/select.h in this case; include windows.h instead.
1309 * src/atomic_ops.c (AO_pause): Use Sleep() in case of
1310 AO_USE_WIN32_PTHREADS (instead of select()).
1311 * src/atomic_ops.c (all_sigs, initialized): Don't define in case
1312 of AO_USE_WIN32_PTHREADS.
1313 * src/atomic_ops.c (AO_compare_and_swap_emulation,
1314 AO_compare_double_and_swap_double_emulation): Don't deal with
1315 signals in case of AO_USE_WIN32_PTHREADS.
1317 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1320 * src/atomic_ops/sysdeps/msftc/arm.h: New file (initial support
1322 * src/atomic_ops/sysdeps/msftc/common32_defs.h: New file.
1323 * src/atomic_ops/sysdeps/msftc/arm.h (AO_ASSUME_ARM_ARCH6): New
1325 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1326 (AO_USE_INTERLOCKED_INTRINSICS): Ditto.
1327 * src/atomic_ops/sysdeps/msftc/x86.h: Move "Interlocked"
1328 declarations to common32_defs.h.
1329 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1330 (AO_INTERLOCKED_VOLATILE): New macro defined (used by
1331 Interlocked-based primitives) for compatibility with older VC++.
1332 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Don't include
1333 missing <intrin.h> if WinCE target.
1334 * src/atomic_ops/sysdeps/msftc/x86.h: Include common32_defs.h
1335 (define AO_USE_INTERLOCKED_INTRINSICS unconditionally).
1336 * src/atomic_ops/sysdeps/msftc/x86.h (AO_fetch_and_add_full,
1337 AO_fetch_and_add1_full, AO_fetch_and_sub1_full,
1338 AO_compare_and_swap_full): Move arch-independent primitives to
1340 * src/atomic_ops/sysdeps/msftc/x86.h: Remove comment about i486 or
1341 better CPU (since Interlocked Add and Xchg primitives are available
1343 * src/atomic_ops.h: Include msftc/x86.h even if _M_IX86 is less than
1345 * src/atomic_ops.h: Include msftc/x86.h if "x86" defined (for WinCE
1347 * src/atomic_ops.h: Include msftc/arm.h if ARM target (for WinCE).
1349 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1352 * src/atomic_ops/sysdeps/msftc/x86.h: Fix comments (prefix
1353 ASSUME_WINDOWS98 with "AO_").
1354 * src/atomic_ops/sysdeps/msftc/x86.h: Prefix ASSUME_VISTA macro with
1356 * src/atomic_ops/sysdeps/msftc/x86.h (AO_nop_full): Replace
1357 K&R-style function definition with ANSI C one.
1358 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full):
1359 Replace AO_TS_SET with its value 0xff (some compilers does not like
1360 C enum consts inside inline assembler).
1361 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full): Add
1362 comment about "missing return value" warning.
1363 * src/atomic_ops/sysdeps/msftc/x86.h
1364 (AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE): New macro.
1365 * src/atomic_ops/sysdeps/msftc/x86.h (AO_compare_and_swap_full): Use
1366 _InterlockedCompareExchange() with args and result of PVOID type
1367 if AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE is defined (mostly for
1368 DigitalMars compiler support).
1369 * src/atomic_ops/sysdeps/msftc/x86.h
1370 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1371 variables ("val1" is the lowest part of AO_double_t).
1372 * src/atomic_ops/sysdeps/msftc/x86.h
1373 (AO_compare_double_and_swap_double_full): Rename to
1374 AO_double_compare_and_swap_full (as it has 3 args).
1375 * src/atomic_ops/sysdeps/msftc/x86.h: Replace C++ style comment
1378 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1381 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove comments about i486
1382 and 32-bit WinChips.
1383 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1384 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Replace
1385 K&R-style function definition with ANSI C one.
1386 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1387 * src/atomic_ops/sysdeps/gcc/x86_64.h
1388 (AO_compare_double_and_swap_double_full): Fix comment.
1389 * src/atomic_ops/sysdeps/gcc/x86_64.h
1390 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1391 variables ("val1" is the lowest part of AO_double_t).
1392 * src/atomic_ops/sysdeps/msftc/x86_64.h
1393 (AO_compare_double_and_swap_double_full): Ditto.
1394 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove comment about
1396 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_ASM_X64_AVAILABLE): New
1398 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1399 "test_and_set_t_is_char.h" if AO_ASM_X64_AVAILABLE (same as in
1400 x86_64.h for gcc); remove FIXME (for re-implement test-and-set).
1401 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1402 "standard_ao_double_t.h" (same as in x86_64.h for gcc).
1403 * src/atomic_ops/sysdeps/msftc/x86_64.h: Add comment for include
1404 <intrin.h> assuming at least VC++ v8.
1405 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove _Interlocked
1406 prototypes (since they are always declared in intrin.h).
1407 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Move its
1408 definition below CAS primitive (to textually group all asm-based
1409 primitives together).
1410 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_test_and_set_full):
1411 Implement for AO_ASM_X64_AVAILABLE case.
1412 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove AO_CASDOUBLE_MISSING
1413 macro (replaced with AO_ASM_X64_AVAILABLE).
1414 * src/atomic_ops/sysdeps/msftc/x86_64.h
1415 (AO_compare_double_and_swap_double_full): Add intrinsic-based
1416 implementation for VC++ v9+.
1417 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Include
1418 <xmmintrin.h> (and use "__m128" type) if _WIN64.
1419 * src/atomic_ops/sysdeps/standard_ao_double_t.h
1420 (AO_HAVE_DOUBLE_PTR_STORAGE): Define it always (as
1421 "double_ptr_storage" is defined for all cases).
1423 2009-09-09 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1425 * src/atomic_ops/sysdeps/gcc/sparc.h (NO_SPARC_V9):
1426 Renamed to AO_NO_SPARC_V9.
1428 2009-09-01 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1430 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
1431 AO_TS_VAL_t for "oldval" (for 64-bit support).
1432 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
1433 New function implemented.
1435 2009-08-12 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1436 (diff107_cvs, resembling diff78 and diff88_cvs)
1438 * src/atomic_ops/sysdeps/sunc/x86.h: New file.
1439 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1440 * src/atomic_ops.h (AO_INLINE): Support inlining for DigitalMars,
1442 * src/atomic_ops.h (AO_compiler_barrier): Use intrinsic-based
1443 implementation for VC++ v8+ (include <intrin.h> before it unless
1444 WinCE target); use asm-based barrier implementation for Borland,
1445 DigitalMars and Watcom.
1446 * src/atomic_ops.h: Fix comment (for x86_64).
1447 * src/atomic_ops.h: Include specialized x86.h and x86_64.h arch
1448 headers for Sun C (if not AO_USE_PTHREAD_DEFS).
1449 * src/atomic_ops.h: Include VC-specific arch headers for Borland,
1450 DigitalMars and Watcom (Win32 target only).
1452 2009-05-27 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1453 (diff87_cvs, resembling diff29, diff68, diff78 partly)
1455 * doc/README.txt: Remove outdated info about Windows support.
1456 * src/atomic_ops/generalize.h (AO_nop_full): Replace
1457 K&R-style function definition with ANSI C one.
1458 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Ditto.
1459 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_nop_full, AO_nop_write):
1461 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Ditto.
1462 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_nop_full): Ditto.
1463 * src/atomic_ops/sysdeps/gcc/mips.h (AO_nop_full): Ditto.
1464 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_nop_full, AO_lwsync): Ditto.
1465 * src/atomic_ops/sysdeps/gcc/x86.h (AO_nop_full): Ditto.
1466 * src/atomic_ops/sysdeps/generic_pthread.h (AO_nop_full): Ditto.
1467 * src/atomic_ops/sysdeps/hpc/ia64.h (AO_nop_full): Ditto.
1468 * src/atomic_ops/sysdeps/icc/ia64.h (AO_nop_full): Ditto.
1469 * src/atomic_ops/sysdeps/ordered.h (AO_nop_full): Ditto.
1470 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_nop_write): Ditto.
1471 * src/atomic_ops/sysdeps/read_ordered.h (AO_nop_read): Ditto.
1472 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h (AO_TS_val): Fix
1475 2009-02-24 Hans Boehm <Hans.Boehm@hp.com> (Really primarily Earl Chew)
1477 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add index,
1478 update modifiers to asms, refine clobbers to "cr0", use
1479 cr0 instead of cr7, add explicit AO_fetch_and_add,
1480 add UNTESTED 64 bit support.
1482 2008-11-10 Hans Boehm <Hans.Boehm@hp.com> (Really Joerg Wagner)
1484 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Compute
1485 AO_compare_and_swap value differently, add
1486 AO_compare_double_and_swap_double, some indentation fixes.
1487 * src/atomic_ops/sysdeps/gcc/arm.h: Make gcc asm code more
1488 robust and minimize clobbers, Add AO_compare_double_and_swap_double.
1490 2008-11-06 Hans Boehm <Hans.Boehm@hp.com>
1492 * INSTALL: Add some platform-specific documentation.
1493 * src/Makefile.msft: Fix copyright notice.
1495 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1497 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
1498 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
1499 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
1500 * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
1501 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
1502 * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
1503 * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
1504 * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
1505 * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
1506 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
1507 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
1508 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
1509 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix comments.
1510 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
1511 * src/atomic_ops.c: Fix comments.
1512 * src/atomic_ops.h: Fix comments.
1513 * src/atomic_ops_stack.c: Fix comments.
1514 * src/atomic_ops_stack.h: Fix comments.
1516 2008-10-20 Hans Boehm <Hans.Boehm@hp.com> (really Andrew Agno)
1518 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
1521 2008-08-21 Hans Boehm <Hans.Boehm@hp.com>
1523 * config.guess, config.sub, configure: Regenerate/replace.
1524 Use autoconf 2.61, automake 1.9.6.
1526 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Thiemo Seufer)
1528 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz
1531 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Sebastian Siewior)
1533 * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__.
1535 2008-07-24 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1537 * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h:
1538 Add parentheses around addr arg for various functions.
1540 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1542 * src/atomic_ops/sysdeps/gcc/powerpc.h:
1543 Add const to first parameter of load calls (forgot one).
1545 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1547 * doc/README.txt, src/atomic_ops/generalize.h,
1548 src/atomic_ops/generalize-small.template,
1549 src/atomic_ops/generalize-small.h,
1550 src/atomic_ops/sysdeps/acquire_release_volatile.h,
1551 src/atomic_ops/sysdeps/char_acquire_release_volatile.h,
1552 src/atomic_ops/sysdeps/int_acquire_release_volatile.h,
1553 src/atomic_ops/sysdeps/short_acquire_release_volatile.h,
1554 src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1555 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1556 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
1557 src/atomic_ops/sysdeps/ao_t_is_int.h,
1558 src/atomic_ops/sysdeps/atomic_load_store.h,
1559 src/atomic_ops/sysdeps/char_atomic_load_store.h,
1560 src/atomic_ops/sysdeps/int_atomic_load_store.h,
1561 src/atomic_ops/sysdeps/short_atomic_load_store.h,
1562 src/atomic_ops/sysdeps/generic_pthread.h,
1563 src/atomic_ops/sysdeps/read_ordered.h,
1564 src/atomic_ops/sysdeps/sysdeps/armcc/arm_v6.h,
1565 src/atomic_ops/sysdeps/gcc/arm.h,
1566 src/atomic_ops/sysdeps/icc/ia64.h,
1567 src/atomic_ops/sysdeps/ibmc/powerpc.h:
1568 Add const to first parameter of load calls.
1570 2008-07-10 Hans Boehm <Hans.Boehm@hp.com>
1572 * src/atomic_ops/sysdeps/gcc/m68k.h: Remove SMP-unsafe
1573 AO_or_full, and let it be autogenerated instead.
1575 2008-07-03 Hans Boehm <Hans.Boehm@hp.com> (Really Thiemo Seufer)
1577 * src/atomic_ops/sysdeps/gcc/mips.h: Really add mips support,
1578 fixing a merge accident.
1580 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1583 * doc/Makefile.in, src/Makefile.in, src/atomic_ops/Makefile.in:
1586 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1589 * src/atomic_ops.h, src/atomic_ops/sysdeps/Makefile.am,
1590 src/atomic_ops/sysdeps/gcc/mips.h: Add mips support.
1591 * src/atomic_ops/sysdeps/gcc/m68k.h: Make test_and_set work
1592 on char, align AO_t. Add cas, or.
1593 * src/atomic_ops/sysdeps/gcc/s390.h: Fix include paths.
1594 * src/atomic_ops/generalize.h: Fix AO_compare_and_swap_double_acquire.
1595 * Makefile.in, aclocal.m4, src/atomic_ops/sysdeps/Makefile.in,
1596 tests/Makefile.in: Regenerate.
1598 2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
1599 (Really Ian Wienand & Debian maintainers)
1601 * src/atomic_ops/sysdeps/gcc/x86.h
1602 (AO_compare_double_and_swap_double_full): Correctly account for
1605 2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
1607 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
1608 double_ptr_storage default to long long; define everywhere.
1610 2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1612 * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
1613 compare_double_and_swap_double.
1615 2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1617 * src/atomic_ops/generalize.h: Add test_and_set generalizations,
1618 Add AO_double_compare_and_swap generalizations.
1619 * src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
1620 * src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
1621 * src/atomic_ops/sysdeps/gcc/x86.h,
1622 src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
1623 compare_double_and_swap_double, commented out for msftc.
1624 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
1625 double_ptr_storage field.
1627 2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
1628 (Merge from separate atomic_ops tree)
1630 * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
1631 double-width cas, and fix its implementation.
1632 * doc/README.txt: Clarify use of _full. Add more warnings about
1635 2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
1637 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1638 %X1 modifier to support indexed addressing.
1640 2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
1642 * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
1645 2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
1647 * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
1650 2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
1652 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1655 2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
1657 * src/atomic_ops.h: include stddef.h
1659 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
1661 * src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
1662 * src/atomic_ops.h: Add test for msftc/x86_64.h.
1663 * src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
1664 * src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
1665 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1666 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1667 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1668 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
1669 Replace unsigned long cast with size_t.
1671 2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
1673 * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
1674 Add cast for return.
1676 2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
1678 * doc/README.txt: Update to reflect C++0x effort.
1680 2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
1682 * src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
1684 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
1687 2006-11-09 Earl Chew (Agilent)
1689 * msftc/x86.h: Follow Microsoft documentation and include
1694 2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
1696 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
1698 2006-03-28 Earl Chew (Agilent)
1700 * src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
1701 * src/atomic_ops/sysdeps/msftc/x86.h:
1702 Use new intrinsics available in MSVC 2003 and MSVC 2005.
1703 Use inline assembler to generate mfence and byte sized xchg
1704 Use correct prototype for InterlockedCompareExchange.
1705 * src/atomic_ops.h: Add test for __PPC__ .
1706 * tests/run_parallel.inc: Add simple VxWorks support.
1707 * tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
1708 to silence compiler warnings.
1710 2006-11-13 Hans Boehm <Hans.Boehm@hp.com>
1712 * src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
1713 * src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
1715 2005-11-04 Hans Boehm <Hans.Boehm@hp.com>
1717 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1718 all_acquire_release_volatile.h, instead of just the pointer-sized
1720 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1721 all_acquire_release_volatile.h and all_atomic_load_store.h,
1722 instead of just the pointer-sized versions.
1726 2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
1728 * src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
1729 * src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
1730 ordered_except_wr.h.
1731 * src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
1732 instead of duplicating it.
1733 * src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
1735 2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
1737 * src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
1738 definition with one that might actually work. (Thanks to Kazu
1739 Hirata and Paul Brook.)
1741 2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
1743 * src/atomic_ops/Makefile.am: Change function naming from "byte" to
1748 2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
1749 Fix various acquire_release_volatile.h files to reflect the fact
1750 that both icc and gcc seem to reorder ordinary memory accesses around
1751 volatile accesses early in the compilation. Modify the acquire
1752 release test to catch this problem (with high probability, and only on
1755 2005-03 Hans Boehm <Hans.Boehm@hp.com>
1756 Fixes for recently introduced bugs. Update x86 and x86-64 assembly
1757 syntax to deal with complaints by some recent gcc versions.
1759 2005-02 Hans Boehm <Hans.Boehm@hp.com>
1760 Added libatomic_ops_gpl library with support for mostly
1761 lock-free stack and malloc().
1763 2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
1764 Hans Boehm <Hans.Boehm@hp.com>
1765 Use autoconf, automake, starting with code from Debian package.
1768 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1769 * test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
1770 Change most platforms to use byte-wide test-and-set locations.
1772 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1773 * ao_t_is_int.h: Add to trivially support int-wide operations
1774 on platforms with int-sized pointers.
1776 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1777 * gcc/powerpc.h: First serious attempt to support PowerPC (with
1778 help from Maged Michael and others).
1780 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1781 * sunc/sparc.[hS]: Added minimal support for the Sun SPARC compiler.
1782 * atomic_ops_sysdeps.S: Add support for platforms that require
1783 out-of-line assembly code.
1785 2004-10 Hans Boehm <Hans.Boehm@hp.com>
1786 More work on char, short, int sized data. Add both
1787 compare_double_and_swap_double and compare_and_swap_double.
1788 Typically each platform will provide at most one of these.
1790 2004-07-02 Ranko Zivojnovic
1791 Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
1793 2004-06 Hans Boehm <Hans.Boehm@hp.com>
1794 Start to add atomic_ops primitives for different sized data.
1796 2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
1798 * atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
1799 Fix support for ecc on IA64. Remove compiler_barrier workaround
1800 for gcc 3.4 and later.
1802 2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
1804 * atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
1805 atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
1806 Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
1807 for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
1808 compiler on PA_RISC and IA64.
1810 2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
1812 * many: Install under "atomic_ops" instead of "ao".
1813 Change atomic_ops include file structure. Auxiliary include
1814 files are all under include/atomic_ops.
1815 Fix (hopefully) "make dist" in atomic_ops distribution.
1816 Renamed various types to end in _t, though the old versions
1817 are still defined for backward compatibility.
1819 2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
1821 * ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
1822 AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
1823 helper macros. AO_test_and_set_full uses helper macros.
1826 Started sometime after version 0.4 release. Currently the format is
1827 informal. Eventually should become more GNU-like.