1 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
3 * Makefile.in: Regenerate properly (remove ltmain.sh from DIST_COMMON).
5 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
7 * Makefile.in: Regenerate (by autoreconf -vif using autoconf-2.69,
8 automake-1.14.1 and libtool-2.4.2).
9 * config.guess: Likewise.
10 * config.sub: Likewise.
12 2015-01-08 James Cowgill <james410@cowgill.org.uk>
14 * src/atomic_ops/sysdeps/gcc/mips.h: Remove inclusion of
15 acquire_release_volatile.h (the ISA manuals do not say anything about
16 volatile loads / stores having acquire / release semantics).
20 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
22 * README: Bump version to 7.2f (rev. F).
24 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
26 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
27 automake-1.14.1 and libtool-2.4.2.418).
29 * Makefile.in: Likewise.
30 * aclocal.m4: Likewise.
31 * config.guess: Likewise.
32 * config.sub: Likewise.
33 * doc/Makefile.in: Likewise.
35 * src/Makefile.in: Likewise.
36 * src/atomic_ops/Makefile.in: Likewise.
37 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
38 * src/config.h.in: Likewise.
39 * test-driver: Likewise.
40 * tests/Makefile.in: Likewise.
42 2014-03-28 Jan-Erik Rediger <badboy@archlinux.us>
44 * doc/README.txt: Remove redundant "an" article (fix typo).
48 2013-11-10 Ivan Maidanski <ivmai@mail.ru>
50 * README: Bump version to 7.2e (rev. E).
52 2013-08-31 Ivan Maidanski <ivmai@mail.ru>
54 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
55 automake-1.13.4 and libtool-2.4.2).
57 * Makefile.in: Likewise.
58 * aclocal.m4: Likewise.
60 * config.guess: Likewise.
61 * config.sub: Likewise.
63 * doc/Makefile.in: Likewise.
64 * install-sh: Likewise.
66 * mkinstalldirs: Likewise.
67 * src/Makefile.in: Likewise.
68 * src/atomic_ops/Makefile.in: Likewise.
69 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
70 * tests/Makefile.in: Likewise.
71 * test-driver: New generated file.
73 2013-08-18 Ivan Maidanski <ivmai@mail.ru>
75 * aclocal.m4: Regenerate (by autoreconf -vif).
77 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
79 * src/atomic_ops/sysdeps/gcc/arm.h
80 (AO_compare_double_and_swap_double): Do not define for
81 pre-Clang3.3 (since the latter does not allocate register pairs for
82 LDREXD/STREXD instructions properly); add comment.
84 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
86 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_double_and_swap_double):
87 Swap assembly code operands ("new_val" and "addr") to prevent
88 Clang3.3 warning about operand truncation.
90 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
92 * src/atomic_ops/sysdeps/gcc/arm.h
93 (AO_compare_double_and_swap_double): Specify that LDREXD and STREXD use
94 2 adjacent registers (thus preventing Clang3.3 from register allocation
95 failures leading to "registers may not be the same" or
96 "even register required" GAS errors).
98 2013-07-30 Ivan Maidanski <ivmai@mail.ru>
100 * src/atomic_ops/generalize.h: Fix a typo in comment
103 2013-04-03 Manuel Serrano <Manuel.Serrano@inria.fr>
105 * configure.ac (AM_CONFIG_HEADER): Replace obsolete macro with with
106 AC_CONFIG_HEADERS one.
108 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
110 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
111 Do not use AO_EXPECT_FALSE (since defined only in v7.3+).
112 * src/atomic_ops/generalize-small.h: Regenerate.
114 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
116 * src/atomic_ops/sysdeps/sunc/x86.h (AO_fetch_and_add_full,
117 AO_char_fetch_and_add_full, AO_short_fetch_and_add_full, AO_or_full,
118 AO_test_and_set_full,
119 AO_compare_and_swap_full): Use "+m" asm constraint for *addr instead
120 of "=m" (because the value pointed by addr is read and written by the
123 2013-03-13 Ivan Maidanski <ivmai@mail.ru>
125 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Use "+m"
126 asm constraint for *addr instead of "=m" (because the value pointed by
127 addr is read and written by the code).
129 2013-03-12 Ivan Maidanski <ivmai@mail.ru>
131 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap): Use "+m"
132 asm constraint for *addr instead of "+R" (the letter is unsupported
133 by clang3.1 resulting in "invalid output constraint in asm" error).
135 2013-02-14 Ivan Maidanski <ivmai@mail.ru>
137 * src/atomic_ops/sysdeps/gcc/arm.h: Do not include read_ordered.h
138 (because load_acquire should contain a DMB instruction in a multi-core
139 case, new load_acquire/read primitives implementation is generalized
140 using nop_full/read which either contain a DMB instruction, or is just
141 a compiler barrier for uniprocessor).
142 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Likewise.
143 * src/atomic_ops/sysdeps/msftc/arm.h: Likewise.
145 2013-01-15 Ivan Maidanski <ivmai@mail.ru>
147 * doc/README.txt (_acquire_read): Add information about memory
148 barrier (similar as in atomic_ops.h).
149 * doc/README.txt (_release_read): Remove information about
150 non-existing barrier.
152 2013-01-14 Ivan Maidanski <ivmai@mail.ru>
154 * src/atomic_ops/sysdeps/ao_t_is_int.h: Fix a typo in comment.
156 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
158 * src/atomic_ops/sysdeps/ao_t_is_int.h
159 (AO_int_load_acquire, AO_int_fetch_and_add_full,
160 AO_int_fetch_and_add1_acquire, AO_int_fetch_and_add1_release,
161 AO_int_fetch_and_sub1_acquire, AO_int_fetch_and_sub1_release): Cast
162 result to unsigned int instead of signed int.
164 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
166 * src/atomic_ops/sysdeps/gcc/s390.h: Move include of
167 ordered_except_wr.h down to be after all_aligned_atomic_load_store.h
168 inclusion (since the latter defines AO_X_load/store primitives used by
171 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
173 * src/atomic_ops/sysdeps/msftc/arm.h: Fix a typo in comment (about
176 2013-01-07 Ivan Maidanski <ivmai@mail.ru>
178 * src/atomic_ops/sysdeps/read_ordered.h (AO_char_load_read,
179 AO_short_load_read, AO_int_load_read): Change return type (and the
180 type of "result" local variable) from AO_t to the type matching the
181 name of the function (i.e., unsigned char/short/int, respectively).
183 2013-01-06 Ivan Maidanski <ivmai@mail.ru>
185 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Insert
186 AO_compiler_barrier for AO_UNIPROCESSOR case.
187 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Likewise.
188 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Likewise.
189 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Refine comment.
191 2013-01-05 Ivan Maidanski <ivmai@mail.ru>
193 * src/atomic_ops/Makefile.in: Regenerate (by autoreconf -vif).
195 2013-01-04 Ivan Maidanski <ivmai@mail.ru>
197 * src/atomic_ops/Makefile.am (BUILT_SOURCES): Define to force
198 regeneration of generalize-small.h (if the corresponding
199 source template is changed) before compilation of .c files (that use
202 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
204 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
205 Add missed definition based on CAS.
206 * src/atomic_ops/generalize-small.h: Regenerate.
208 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
210 * src/atomic_ops/generalize-small.template (AO_XSIZE_load): Move
211 definition (which is based on AO_XSIZE_load_acquire) down to be after
212 AO_XSIZE_load_acquire definition.
213 * src/atomic_ops/generalize-small.template (AO_XSIZE_store): Move
214 definition (which is based on AO_XSIZE_store_release) down to be after
215 AO_XSIZE_store_release definition.
216 * src/atomic_ops/generalize-small.h : Regenerate.
218 2012-10-09 Ivan Maidanski <ivmai@mail.ru>
220 * tests/test_stack.c (run_one_test): Change type of "index" local
221 variable from long to int to match printf format specifier (when
222 VERBOSE defined); cast from "arg" pointer to integer via size_t (to
223 avoid 64-bit compiler warning).
225 2012-10-08 Ivan Maidanski <ivmai@mail.ru>
227 * src/atomic_ops/sysdeps/gcc/x86.h (AO_double_compare_and_swap_full):
228 New function (only if __x86_64__) implemented using GCC built-in
229 __sync CAS primitive available for x32.
230 * src/atomic_ops/sysdeps/gcc/x86.h
231 (AO_HAVE_double_compare_and_swap_full): New macro (for x32 only).
232 * src/atomic_ops/sysdeps/gcc/x86.h
233 (AO_compare_double_and_swap_double_full): Implement using
234 double_compare_and_swap_full instead of cmpxchg8b for x32 (since
235 x86_64 has cmpxchg and cmpxchg16b but not cmpxchg8b).
237 2012-10-05 Ivan Maidanski <ivmai@mail.ru>
239 * src/atomic_ops.h: Fix typos in comments (update generalize.h
242 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
244 * src/atomic_ops.c (AO_pause): Fix millis value (passed to Win32
245 Sleep) for the case of 'n' argument in range between 12 and 21,
246 inclusive if AO_USE_WIN32_PTHREADS (sleep for 1 ms in this case).
247 * src/atomic_ops_stack.c (AO_pause): Evaluate 'msecs' value using the
248 same algorithm as in atomic_ops.c (Win32 only).
250 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
252 * src/atomic_ops_stack.c (dummy): Define as static (to make symbol
253 without AO_ prefix visible only within this file); initialize to 1
254 (same as in atomic_ops.c, so that AO_spin would never really alter
257 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
259 * src/atomic_ops.h: Fix 'load' primitive name in comment (replace
260 AO_load_release_read with AO_load_acquire_read).
262 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
264 * src/atomic_ops/sysdeps/emul_cas.h
265 (AO_compare_double_and_swap_double_full): Test (define if)
266 AO_HAVE_compare_double_and_swap_double_full macro instead of
267 AO_HAVE_compare_double_and_swap_double.
269 2012-10-01 Ivan Maidanski <ivmai@mail.ru>
271 * src/atomic_ops/sysdeps/standard_ao_double_t.h (double_ptr_storage):
272 Define as "unsigned long long" instead of __m128 for gcc/x32 (i.e.,
273 ILP32 on x86_64); update and reformat comment.
275 2012-09-19 Ivan Maidanski <ivmai@mail.ru>
277 * configure: Regenerate (by autoreconf -vif using autoconf-2.68,
278 automake-1.11.3 and libtool-2.4.2).
280 * Makefile.in: Likewise.
281 * aclocal.m4: Likewise.
283 * config.guess: Likewise.
284 * config.sub: Likewise.
286 * doc/Makefile.in: Likewise.
287 * install-sh: Likewise.
289 * src/Makefile.in: Likewise.
290 * src/atomic_ops/Makefile.in: Likewise.
291 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
292 * tests/Makefile.in: Likewise.
294 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
296 * src/atomic_ops.h: Include gcc/x86.h instead of gcc/x86_64.h if
297 gcc/x32 (i.e., GCC (or Intel compiler), __x86_64__ is defined, and
298 __ILP32__ is defined) to have AO_compare_double_and_swap_double_full
299 defined properly (based on cmpxchg8b); explicitly define
300 AO_USE_PENTIUM4_INSTRS for gcc/x32.
301 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove ILP32-specific code
302 (AO_T_IS_INT definition).
304 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
306 * src/atomic_ops/sysdeps/sunc/x86_64.h
307 (AO_compare_double_and_swap_double_full): Fix inline assembly
308 arguments commenting out "m"(*addr) one (similar to that in
309 sunc/x86.h) if AO_CMPXCHG16B_AVAILABLE defined.
311 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
313 * src/atomic_ops/sysdeps/gcc/x86_64.h
314 (AO_compare_double_and_swap_double_full): Fix a typo in comment.
315 * src/atomic_ops/sysdeps/sunc/x86_64.h
316 (AO_compare_double_and_swap_double_full): Likewise.
318 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
320 * tests/test_atomic.c (acqrel_thr): Call abort() after fprintf(stderr).
321 * tests/test_malloc.c (run_one_test): Likewise.
322 * tests/test_stack.c (check_list, main): Likewise.
324 2012-09-05 Ivan Maidanski <ivmai@mail.ru>
326 * src/atomic_ops/sysdeps/gcc/x86.h
327 (AO_compare_double_and_swap_double_full): Re-implement for PIC mode
328 saving EBX to a local variable (instead of pushing it to stack) and
329 saving memory operand address to a register (edi which is manually
330 preserved), so that the whole code could also work even if EBX points
331 to memory operand (e.g., in Clang); test __PIC__ using ifdef (instead
332 of "if"); update comments; reformat code.
336 2012-08-09 Ivan Maidanski <ivmai@mail.ru>
338 * README: Change version to 7.2d (rev. D).
340 2012-08-01 Ivan Maidanski <ivmai@mail.ru>
342 * src/atomic_ops.h (AO_compiler_barrier): Add parentheses and cast to
345 2012-07-12 Ivan Maidanski <ivmai@mail.ru>
347 * config.guess: Regenerate (by autoreconf -vif using autoconf-2.68,
348 automake-1.11.1 and libtool-2.4).
349 * config.sub: Likewise.
351 2012-07-04 Ivan Maidanski <ivmai@mail.ru>
353 * src/atomic_ops/sysdeps/gcc/x86.h
354 (AO_compare_double_and_swap_double_full): Use EDI register for
355 "new_val1" argument in PIC mode only for GCC 4.3+ to workaround
356 a problem with older compiler versions (e.g., GCC 4.2.1 [FreeBSD])
357 that do not recognize 'D' as a valid register specification; update
360 2012-07-01 Ivan Maidanski <ivmai@mail.ru>
362 * src/atomic_ops/generalize-small.template
363 (AO_XSIZE_fetch_and_add_full,
364 AO_XSIZE_fetch_and_add_acquire, AO_XSIZE_fetch_and_add_release):
365 Fix type of function result by adding
366 'unsigned' to XCTYPE.
367 * src/atomic_ops/generalize-small.h: Regenerate.
371 2012-05-11 Ivan Maidanski <ivmai@mail.ru>
373 * configure.ac, README: Bump version to 7.2 (final).
374 * configure: Regenerate.
376 2012-05-01 H.J. Lu <hjl.tools@gmail.com>
378 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_fetch_and_add_full,
379 AO_and_full, AO_or_full, AO_xor_full, AO_compare_and_swap_full):
380 Remove 'q' suffix in asm instruction.
382 2012-04-16 H.J. Lu <hjl.tools@gmail.com>
384 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_T_IS_INT): Defined
387 2012-03-28 Ivan Maidanski <ivmai@mail.ru>
389 * configure.ac (PICFLAG): Adjust AC_MSG_CHECKING message; report
390 "none" result if no -fPIC is needed (for Cygwin/MinGW); determine
391 whether GCC -fPIC option causes __PIC__ macro definition; pass
392 -D __PIC__ to PICFLAG (instead of CFLAGS) only if not defined
393 automatically in case -fPIC specified; update comment.
395 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
397 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Do not use __m128
398 if GCC pre-v4 (at least, xmmintrin.h is missing in gcc-3.4.3-x86_64
399 included in Solaris 10 distribution).
401 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
403 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Fix a typo in
406 2012-03-19 Ivan Maidanski <ivmai@mail.ru>
408 * configure: Regenerate.
409 * Makefile.in: Likewise.
411 2011-08-14 Petter Urkedal <paurkedal@gmail.com>
413 * atomic_ops.pc.in -> pkgconfig/atomic_ops.pc.in: Moved.
414 * pkgconfig/atomic_ops-uninstalled.pc.in: Added developer version.
415 * configure.ac, Makefile.am: Update accordingly.
417 2011-08-04 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
419 * atomic_ops.pc.in: new file.
420 * Makefile.am (pkgconfigdir, pkgconfig_DATA): new items.
421 * configure.ac (AC_CONFIG_FILES): add atomic_ops.pc.
422 * configure, Makefile.in: Regenerate.
424 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
426 * src/atomic_ops/sysdeps/gcc/x86.h
427 (AO_compare_double_and_swap_double_full): Use EDI register for
428 "new_val1" argument instead of a memory operand and use XCHG assembler
429 instruction instead of push/pop in case of PIC mode (to workaround
430 a bug in GCC 4.6.1); update the comment.
432 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
434 * src/atomic_ops_stack.c (AO_stack_push_release): Make "cptr" local
435 variable volatile to workaround a bug in clang-1.1/x86 compiler; add
438 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
440 * src/atomic_ops/sysdeps/gcc/x86.h
441 (AO_compare_double_and_swap_double_full): Fix argument name in the
443 * src/atomic_ops/sysdeps/sunc/x86.h
444 (AO_compare_double_and_swap_double_full): Likewise.
446 2012-03-04 Ivan Maidanski <ivmai@mail.ru>
448 * src/atomic_ops_malloc.h (AO_malloc_enable_mmap): Fix a typo in the
451 2012-01-19 Ivan Maidanski <ivmai@mail.ru>
453 * tests/test_atomic.c (main): Put "void" keyword into the arguments
454 specification of the function prototype.
455 * tests/test_stack.c (main): Likewise.
457 2011-12-16 Ivan Maidanski <ivmai@mail.ru>
459 * src/atomic_ops/sysdeps/gcc/arm.h (__ARM_ARCH_7__, __ARM_ARCH_7A__):
460 Recognize to override __ARM_ARCH_5xx__ macros (since Android NDK GCC
461 defines both for armv7); update comment.
463 2011-11-29 Ivan Maidanski <ivmai@mail.ru>
465 * src/atomic_ops/sysdeps/gcc/hexagon.h: Include generalize.h file
466 before ao_t_is_int.h one.
467 * src/atomic_ops/sysdeps/gcc/ia64.h: Likewise.
468 * src/atomic_ops/sysdeps/hpc/ia64.h: Likewise.
470 2011-11-03 Ivan Maidanski <ivmai@mail.ru>
472 * src/atomic_ops/generalize-small.template
473 (AO_XSIZE_fetch_and_add_full, AO_XSIZE_fetch_and_add_acquire,
474 AO_XSIZE_fetch_and_add_release): Change return type from AO_t to
476 * src/atomic_ops/generalize-small.h: Regenerate.
478 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
480 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap_full):
481 Change "result" local variable type from AO_t to int.
482 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_compare_and_swap_full):
485 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
487 * tests/test_atomic_include.h: Regenerate.
489 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
491 * tests/test_atomic_include.template (test_atomicXX): Add action for
492 the missing AO_compare_and_swap primitive.
494 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
496 * src/atomic_ops.c (init_lock): Define only unless AO_USE_NO_SIGNALS.
498 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
500 * doc/README.txt: Fix a typo.
502 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
504 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Cast
505 returned value to int.
507 2011-10-17 Ivan Maidanski <ivmai@mail.ru>
509 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
511 2011-10-17 Ivan Maidanski <ivmai@mail.ru> (really Thorsten Glaser)
513 * src/atomic_ops/sysdeps/gcc/m68k.h (AO_test_and_set_full): Cast the
516 2011-10-15 Ivan Maidanski <ivmai@mail.ru>
518 * src/atomic_ops/sysdeps/gcc/s390.h (AO_compare_and_swap_full):
519 Change return from AO_t to int.
520 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_compare_and_swap_acquire,
521 AO_compare_and_swap_release, AO_compare_and_swap_full): Likewise.
523 2011-10-11 Ivan Maidanski <ivmai@mail.ru> (really Linas Vepstas)
525 * src/atomic_ops/sysdeps/Makefile.am (nobase_private_HEADERS): Add
527 * src/atomic_ops.h: Include hexagon.h file.
528 * src/atomic_ops/sysdeps/gcc/hexagon.h: New file.
530 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
533 (AO_non_posix_implementation_is_entirely_in_headers): Make external.
535 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
537 * configure: Regenerate.
538 * tests/Makefile.in: Ditto.
539 * tests/test_atomic_include.h: Ditto.
541 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
543 * configure.ac (PICFLAG, THREADDLLIBS): Define as empty for MinGW.
544 * configure.ac (have_pthreads): New definition (set to true unless
546 * configure.ac (HAVE_PTHREAD_H): New AM conditional (based on
547 have_pthreads value).
548 * tests/Makefile.am (test_atomic_pthreads_SOURCES,
549 test_atomic_pthreads_CPPFLAGS, test_atomic_pthreads_LDADD): Define
550 only if HAVE_PTHREAD_H.
551 * tests/Makefile.am (TESTS): Don't include test_atomic_pthreads unless
553 * tests/Makefile.am (check_PROGRAMS): Define to TESTS value.
555 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
557 * configure.ac (PICFLAG): Set to -fPIC if GCC but not Gygwin.
559 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
561 * tests/test_malloc.c (LIST_LENGTH, LARGE_OBJ_SIZE): Define to
562 a smaller value unless HAVE_MMAP.
564 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
566 * tests/test_malloc.c (cons, run_one_test): Call exit with a non-zero
567 code (instead of abort) if out of memory.
568 * tests/test_stack.c (add_elements): Likewise.
569 * tests/test_stack.c (main): Use a distinct exit code if a thread
572 2011-09-15 Ivan Maidanski <ivmai@mail.ru>
574 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo (replace AO_FORCE_CAS
575 with AO_REQUIRE_CAS in a comment).
577 2011-09-08 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
579 * src/Makefile.am, tests/Makefile.am: Set compiler include paths
580 to $(top_builddir)/src and $(top_srcdir)/src.
581 * src/Makefile.in: Regenerate.
582 * tests/Makefile.in: Ditto.
584 2011-07-14 Ivan Maidanski <ivmai@mail.ru>
586 * tests/list_atomic.template (list_atomicXX): Remove "addr" local
587 variable (use "&val" instead); initialize "newval" and "oldval"
588 local variables; rename "tsaddr" local variable to "ts" one.
589 * tests/list_atomic.template (list_atomicXX): Fix
590 AO_test_and_setXX call (pass address instead of value).
591 * tests/list_atomic.template: Expand all tabs to spaces; remove
592 trailing spaces at EOLn.
593 * tests/run_parallel.inc: Ditto.
594 * tests/test_atomic.c: Ditto.
595 * tests/list_atomic.c: Regenerate.
596 * tests/run_parallel.inc (AO_PTRDIFF_T): New macro.
597 * tests/run_parallel.inc (tramp): Cast between pointer and integer
598 types via casting to AO_PTRDIFF_T.
599 * tests/test_atomic.c (add1sub1_thr, acqrel_thr): Ditto.
600 * tests/run_parallel.inc (run_parallel): Adjust printf format
601 specifiers for DWORD parameters.
602 * tests/test_stack.c: Skip test if no pthreads.
604 2011-06-27 Ivan Maidanski <ivmai@mail.ru> (really Jeremy Huddleston)
606 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
607 Explicitly cast 0xff to unsigned char (otherwise LLVM v2.7 GAS
608 reports an error); don't recognize AO_XCHGB_RET_WORD.
609 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
612 2011-06-15 Ivan Maidanski <ivmai@mail.ru>
614 * configure.ac, README: Change to version 7.2alpha7.
615 * configure: Regenerate.
619 2011-06-14 Ivan Maidanski <ivmai@mail.ru>
621 * configure.ac, README: Change to version 7.2alpha6.
622 * configure: Regenerate.
624 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
626 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_load): Do not
627 define for pre-ARMv6 directly (revert part of the previous
629 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set,
630 AO_test_and_set_full): Refine the comment.
631 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Define
632 SWP-based implementation at the end of file (if none of
633 AO_test_and_set functions are defined previously).
634 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Remove
635 SWP-based implementation (revert part of the previous commit).
636 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store): Remove redundant
637 definition at the file end (revert part of the previous commit).
639 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
641 * src/atomic_ops/sysdeps/gcc/arm.h: Handle ARMv6M architecture.
642 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Force "swp"
643 instruction usage (instead of ldrex/strex) if AO_FORCE_USE_SWP;
645 * src/atomic_ops/sysdeps/gcc/arm.h
646 (AO_compare_double_and_swap_double): Handle ARMv7EM architecture
648 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set, AO_nop_full,
649 AO_load, AO_store): Define at the end of file (in case not defined
652 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
654 * src/atomic_ops/generalize.h: Reformat code.
655 * src/atomic_ops/generalize.h (AO_test_and_set_acquire): Fix
657 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_test_and_set): Ditto.
658 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Ditto.
659 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Add
660 a comment (about SWP instruction).
662 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
664 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
665 AO_THUMB_RESTORE_MODE): Use single-digit labels (to workaround
666 a bug in GCC v4.2.1 which reports "garbage following instruction"
668 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Use "IT"
669 instruction only for Thumb-2 mode.
671 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
673 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
674 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define as empty
676 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
677 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
678 AO_compare_and_swap, AO_compare_double_and_swap_double): Remove
679 unnecessary "memory" keyword from the list of clobbered registers
680 (revert part of the previous commit).
681 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Add
682 a comment for "IT" instruction.
683 * src/atomic_ops/sysdeps/gcc/arm.h
684 (AO_compare_double_and_swap_double): Don't define on the
685 architectures where unimplemented; add a comment; replace return
686 (in the loop) statement with break.
688 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
690 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
691 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define new
692 macro (to switch temporarily CPU mode to ARM in inline assembler
693 if compiling in the Thumb mode and to restore it back on leave).
694 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_store,
695 AO_test_and_set, AO_fetch_and_add, AO_fetch_and_add1,
696 AO_fetch_and_sub1, AO_compare_and_swap, AO_test_and_set_full):
697 Enable compilation in the Thumb mode (use AO_THUMB_GO_ARM,
698 AO_THUMB_RESTORE_MODE and AO_THUMB_SWITCH_CLOBBERS macros).
699 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
700 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
701 AO_compare_and_swap, AO_compare_double_and_swap_double): Add
702 "memory" to the list of clobbered registers.
704 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
706 * src/atomic_ops/sysdeps/gcc/arm.h: Reformat code.
707 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
708 AO_test_and_set_full): Add assembler comment containing the
711 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
713 * tests/test_malloc.c (run_one_test): Test AO_malloc() result
714 (if out of memory then print the message and abort).
715 * tests/test_stack.c (add_elements): Ditto.
717 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
719 * src/atomic_ops/generalize.h (AO_HAVE_or_full): Add missing
721 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_HAVE_nop_write):
723 * src/atomic_ops/sysdeps/read_ordered.h (AO_HAVE_nop_read): Ditto.
724 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_store_release):
727 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
729 * src/atomic_ops/generalize-small.template
730 (AO_HAVE_XSIZE_fetch_and_add_full): Add missing definition.
731 * src/atomic_ops/generalize-small.template: Reformat code.
732 * src/atomic_ops/generalize-small.h: Regenerate.
734 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
736 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Remove
737 blank line between AO_func and AO_HAVE_func definitions.
738 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
739 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
740 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
741 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
742 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
743 * src/atomic_ops/sysdeps/ordered.h: Ditto.
744 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
745 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
746 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
747 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
748 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
749 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
750 * src/atomic_ops/sysdeps/gcc/cris.h: Ditto.
751 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
752 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
753 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
754 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
755 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
756 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
757 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
758 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
759 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
760 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
761 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
762 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
763 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
764 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
765 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
766 * src/atomic_ops/sysdeps/sunc/sparc.h: Ditto.
767 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
768 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
769 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Reformat
771 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
772 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
773 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
774 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
775 * src/atomic_ops/sysdeps/ordered.h: Ditto.
776 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
777 * src/atomic_ops/sysdeps/test_and_set_t_is_char.h: Remove file
779 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Don't
781 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire,
782 AO_test_and_set, AO_compare_and_swap): Merge adjacent definitions.
783 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_store_release):
785 * src/atomic_ops/sysdeps/sunc/sparc.h: Expand all tabs to spaces;
786 remove trailing spaces at EOLn.
788 2011-06-02 Ivan Maidanski <ivmai@mail.ru>
790 * tests/test_malloc.c (main): Remove unused "exper_n" local
792 * tests/test_stack.c (run_one_test): Remove unused "aux" local
795 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
797 * src/atomic_ops/sysdeps/gcc/arm.h
798 (AO_compare_double_and_swap_double,
799 AO_HAVE_compare_double_and_swap_double): Define only starting from
801 * src/atomic_ops/sysdeps/gcc/arm.h
802 (AO_compare_double_and_swap_double): Fix function name in
803 assembler code; replace while (1) loop with "do-while".
805 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
807 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full):
808 Specify "%b0" (instead of "%0") in "xchg" instruction (to
809 workaround a bug in Sun C 5.11).
810 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
813 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
815 * src/atomic_ops_malloc.c (AO_malloc_enable_mmap): Workaround for
816 Sun C compiler (call "release" variant of AO_store).
818 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
820 * configure.ac (_PTHREADS): New template (used for NetBSD).
821 * configure.ac (THREADDLLIBS): New macro.
822 * tests/Makefile.am (test_atomic_LDADD, test_stack_LDADD,
823 test_atomic_pthreads_LDADD, test_malloc_LDADD): Use THREADDLLIBS
824 instead of "-lpthread".
825 * configure: Regenerate.
826 * Makefile.in: Ditto.
827 * doc/Makefile.in: Ditto.
828 * src/Makefile.in: Ditto.
829 * src/atomic_ops/Makefile.in: Ditto.
830 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
831 * src/config.h.in: Ditto.
832 * tests/Makefile.in: Ditto.
834 2011-05-30 Ivan Maidanski <ivmai@mail.ru>
836 * configure.ac (PIC): Add workaround for GCC v3.4.6 which does not
837 define the corresponding macro.
838 * configure.ac: Don't check for GCC twice.
839 * configure: Regenerate.
840 * tests/test_malloc.c (DEFAULT_NTHREADS): New macro.
841 * tests/test_malloc.c (run_one_test): Refine printed message (in
843 * tests/test_malloc.c (main): Use DEFAULT_NTHREADS.
844 * tests/test_stack.c (main): Cast AO_stack_pop() returned pointer.
845 * src/atomic_ops_malloc.c (USE_MMAP_ANON, GC_MMAP_FLAGS,
846 OPT_MAP_ANON): New macro.
847 * src/atomic_ops_malloc.c (get_mmaped): Pass -1 (instead of 0) as
848 file descriptor to mmap() if MAP_ANONYMOUS (same as for MAP_ANON).
849 * src/atomic_ops_malloc.c (get_mmaped): Use USE_MMAP_ANON,
850 GC_MMAP_FLAGS and OPT_MAP_ANON macros; reformat code; check open()
853 2011-05-11 Ivan Maidanski <ivmai@mail.ru>
855 * tests/test_malloc.c: Expand all tabs to spaces; remove trailing
857 * tests/test_malloc.c (LENGTH, LARGE): Rename to LIST_LENGTH and
858 LARGE_OBJ_SIZE, respectively.
859 * tests/test_malloc.c (MAX_NTHREADS, N_REVERSALS, LIST_LENGTH,
860 LARGE_OBJ_SIZE): Do not define unless undefined.
861 * tests/test_malloc.c (run_one_test): Recognize DEBUG_RUN_ONE_TEST
864 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
866 * tests/Makefile.am (EXTRA_DIST): Add list_atomic.c; update
868 * tests/Makefile.am (CLEANFILES): Remove test_atomic_include.h,
870 * tests/Makefile.am: Remove trailing spaces at EOLn.
871 * tests/Makefile.in: Regenerate.
873 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
875 * tests/test_stack.c (MAX_NTHREADS, N_EXPERIMENTS): Do not define
877 * tests/test_stack.c: Expand all tabs to spaces.
878 * tests/test_atomic_include.h: Ditto.
879 * tests/test_stack.c (main): Free pop'ed elements.
880 * tests/test_atomic_include.h (test_atomic, test_atomic_release,
881 test_atomic_acquire, test_atomic_read, test_atomic_write,
882 test_atomic_full, test_atomic_release_write,
883 test_atomic_acquire_read): Remove prototype.
885 2011-04-22 Ivan Maidanski <ivmai@mail.ru>
887 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_MASK): Add "volatile" for
888 asm; remove redundant trailing ';'.
890 2011-04-11 Ivan Maidanski <ivmai@mail.ru> (really Jim Meyering)
892 * doc/README.txt: Remove doubled words in comments.
894 2011-03-18 Ivan Maidanski <ivmai@mail.ru>
896 * src/atomic_ops/sysdeps/gcc/arm.h: Test for all the known pre-v6
897 ARM chips instead of all the currently existing v6+ ones.
899 2011-03-13 Ivan Maidanski <ivmai@mail.ru>
901 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo in a comment;
902 expand all tabs to spaces.
903 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
904 Recognize AO_XCHGB_RET_WORD new macro (to workaround a bug).
905 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
908 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
910 * src/atomic_ops.c: Include sys/time.h (to get timespec) for NaCl.
911 * src/atomic_ops_malloc.c (msb): Do the shift by 32 only once (in
912 a conditional expression) to prevent a compiler warning.
913 * src/atomic_ops_malloc.c: Expand all tabs to spaces; remove
914 trailing spaces at EOLn.
916 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
918 * src/atomic_ops.c: Explicitly define AO_USE_NO_SIGNALS and
919 AO_USE_NANOSLEEP for NaCl.
921 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
923 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
924 automake-1.11.1 and libtool-2.4).
927 2011-02-09 Ivan Maidanski <ivmai@mail.ru>
929 * src/atomic_ops.c (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): New
931 * src/atomic_ops.c (AO_USE_WIN32_PTHREADS): Imply
933 * src/atomic_ops.c: Don't include signal.h if AO_USE_NO_SIGNALS.
934 * src/atomic_ops.c: Include time.h if AO_USE_NANOSLEEP.
935 * src/atomic_ops.c (AO_locks, AO_pause): Reformat the code.
936 * src/atomic_ops.c (AO_pause): Use nanosleep() if
938 * src/atomic_ops.c (all_sigs, initialized,
939 AO_compare_and_swap_emulation,
940 AO_compare_double_and_swap_double_emulation): Use
941 AO_USE_NO_SIGNALS instead of AO_USE_WIN32_PTHREADS.
943 2011-01-07 Ivan Maidanski <ivmai@mail.ru>
945 * src/.cvsignore: Add more auto-generated files.
946 * tests/.cvsignore: Ditto.
947 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full, AO_store,
948 AO_compare_double_and_swap_double): Reformat code.
949 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
950 AO_compare_double_and_swap_double): Ditto.
951 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
952 Produce "it eq" instruction only for Thumb mode.
953 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
955 2010-11-23 Ivan Maidanski <ivmai@mail.ru> (really Michael Hope)
957 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
958 Insert "it eq" just before "strexeq" (required for Thumb-2 mode,
959 ignored in ARM mode).
960 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
962 2010-09-15 Ivan Maidanski <ivmai@mail.ru> (with input from Gregory Farnum)
964 * src/atomic_ops.h: Include armcc/arm_v6.h if __ARMCC__.
965 * src/atomic_ops.h: Include ibmc/powerpc.h if __IBMC__.
966 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if msftc/arm.h is
968 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if AO_CAN_EMUL_CAS
969 is defined but emul_cas.h has not been included.
970 * src/atomic_ops/sysdeps/gcc/arm.h: Fix a typo.
972 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
974 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
975 automake-1.11.1 and libtool-2.2.8).
978 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
980 * src/atomic_ops/sysdeps/gcc/arm.h: Replace C++ style comment
983 2010-05-30 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
985 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Use
986 "register long" (instead of "int") for "ret" variable.
987 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Replace
988 with AO_test_and_set_full (same for AO_HAVE_test_and_set).
989 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_compare_and_swap_full):
990 New function implemented.
992 2010-05-22 Ivan Maidanski <ivmai@mail.ru>
994 * src/atomic_ops/sysdeps/Makefile.am (nobase_sysdep_HEADERS):
996 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
998 2010-05-21 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
1000 * src/atomic_ops.h: Recognize __avr32__ (include gcc/avr32.h).
1001 * src/atomic_ops/sysdeps/gcc/avr32.h: New file.
1003 2010-04-29 Ivan Maidanski <ivmai@mail.ru>
1005 * doc/README_malloc.txt: Fix a typo.
1006 * doc/README_stack.txt: Ditto.
1008 2010-02-25 Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
1010 * .cvsignore: New file.
1011 * doc/.cvsignore: Ditto.
1012 * src/.cvsignore: Ditto.
1013 * src/atomic_ops/.cvsignore: Ditto.
1014 * src/atomic_ops/sysdeps/.cvsignore: Ditto.
1015 * tests/.cvsignore: Ditto.
1017 2010-02-19 Ivan Maidanski <ivmai@mail.ru> (mostly really Patrick Marlier)
1019 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full):
1020 Use __sync_bool_compare_and_swap() if AO_USE_SYNC_CAS_BUILTIN.
1021 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1023 * src/atomic_ops.h (AO_USE_SYNC_CAS_BUILTIN): New macro defined
1024 if GCC v4.2+ or Intel compiler v11.1+ (only for amd64).
1025 * src/atomic_ops.h: Include GCC-specific sysdeps files for Intel
1026 compiler in GCC compatible mode (only for x86 and amd64).
1028 2010-02-18 Ivan Maidanski <ivmai@mail.ru>
1030 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Don't check
1031 for AO_USE_PENTIUM4_INSTRS (since "mfence" (SSE2) is supported on
1032 all x86_64/amd64 chips); remove the comment.
1033 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1034 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Define only
1035 if AO_ASM_X64_AVAILABLE.
1036 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1037 Use built-in __sync_bool_compare_and_swap() if GCC v4.2+.
1039 2010-02-17 Ivan Maidanski <ivmai@mail.ru> (really Patrick Marlier)
1041 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full,
1042 AO_compare_double_and_swap_double_full): Use EAX for the result
1043 since cmpxchg clobbers it.
1044 * src/atomic_ops/sysdeps/sunc/x86.h (AO_compare_and_swap_full,
1045 AO_compare_double_and_swap_double_full): Ditto.
1046 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full,
1047 AO_compare_double_and_swap_double_full): Ditto.
1048 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_compare_and_swap_full,
1049 AO_compare_double_and_swap_double_full): Ditto.
1051 2010-02-04 Ivan Maidanski <ivmai@mail.ru>
1053 * doc/Makefile.in: Regenerate.
1055 2010-02-04 Ivan Maidanski <ivmai@mail.ru> (really Ian Wienand)
1057 * doc/Makefile.am: Remove duplicate file in the list.
1059 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1061 * ChangeLog: Fix some typos.
1063 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1065 * src/atomic_ops_stack.c (AO_stack_push_explicit_aux_release):
1066 Define "i" variable only if used (to suppress a compiler warning).
1068 2010-02-02 Ivan Maidanski <ivmai@mail.ru>
1070 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full): Fix
1071 "xchg" data size (remove "l" suffix).
1072 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
1074 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full): Use
1076 * src/atomic_ops/sysdeps/sunc/x86.h
1077 (AO_compare_double_and_swap_double_full,
1078 AO_HAVE_compare_double_and_swap_double_full): Comment out (since
1079 not tested, might be wrong, and tickles a bug in some Sun CC
1080 versions; besides, __PIC__ macro is never predefined by Sun CC).
1082 2010-01-29 Ivan Maidanski <ivmai@mail.ru>
1084 * INSTALL: Regenerate (by autoreconf -vif using libtool-2.2.6b,
1085 automake-1.11.1, autoconf-2.65).
1086 * Makefile.in: Ditto.
1087 * aclocal.m4: Ditto.
1089 * config.guess: Ditto.
1090 * config.sub: Ditto.
1093 * install-sh: Ditto.
1095 * mkinstalldirs: Ditto.
1096 * doc/Makefile.in: Ditto.
1097 * src/Makefile.in: Ditto.
1098 * src/atomic_ops/Makefile.in: Ditto.
1099 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1100 * src/config.h.in: Ditto.
1101 * tests/Makefile.in: Ditto.
1103 2009-12-19 Ivan Maidanski <ivmai@mail.ru>
1105 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_lwsync): Redirect to
1106 AO_sync() if __NO_LWSYNC__ (same as for gcc/powerpc.h).
1108 2009-12-17 Ivan Maidanski <ivmai@mail.ru> (really Emmanuel Stapf)
1110 * src/atomic_ops.h: Recognize _M_X64 (as an alias for _AMD64_).
1112 2009-12-04 Ivan Maidanski <ivmai@mail.ru>
1114 * configure.ac, README: Change to version 7.2alpha5.
1115 * configure: Regenerate.
1119 2009-12-02 Ivan Maidanski <ivmai@mail.ru>
1121 * configure.ac, README: Change to version 7.2alpha4.
1122 * configure: Regenerate.
1124 2009-12-01 Ivan Maidanski <ivmai@mail.ru>
1126 * configure.ac, README: Change to version 1.3alpha1.
1127 * configure: Regenerate.
1129 2009-11-21 Ivan Maidanski <ivmai@mail.ru> (really Daniel R. Grayson)
1131 * configure.ac (AC_CONFIG_COMMANDS): Quote PICFLAG, CC, DEFS
1133 * configure: Regenerate.
1135 2009-10-06 Ivan Maidanski <ivmai@mail.ru>
1137 * src/atomic_ops/sysdeps/gcc/sh.h: Remove commented out AO_TS_SET
1140 2009-10-05 Ivan Maidanski <ivmai@mail.ru>
1142 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1144 2009-10-05 Ivan Maidanski <ivmai@mail.ru> (really Takashi YOSHII)
1146 * src/atomic_ops/sysdeps/gcc/sh.h: New file.
1147 * src/atomic_ops.h: Include gcc/sh.h if __arm__.
1148 * src/atomic_ops/sysdeps/Makefile.am: Add gcc/sh.h entry.
1150 2009-10-02 Ivan Maidanski <ivmai@mail.ru>
1152 * src/atomic_ops/sysdeps/Makefile.am: Add armcc/arm_v6.h,
1153 msftc/arm.h, msftc/common32_defs.h, sunc/x86.h sunc/x86_64.h
1154 entries; order all entries alphabetically.
1155 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1157 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1159 * aclocal.m4: Regenerate (by autoreconf -vif using libtool-2.2,
1160 automake-1.10.2, autoconf-2.64).
1162 * Makefile.in: Ditto.
1163 * aclocal.m4: Ditto.
1164 * config.guess: Ditto.
1165 * config.sub: Ditto.
1168 * install-sh: Ditto.
1170 * mkinstalldirs: Ditto.
1171 * doc/Makefile.in: Ditto.
1172 * src/config.h.in: Ditto.
1173 * src/Makefile.in: Ditto.
1174 * src/atomic_ops/Makefile.in: Ditto.
1175 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1176 * tests/Makefile.in: Ditto.
1178 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1180 * src/atomic_ops/sysdeps/gcc/x86.h: Remove spaces preceding '#'
1181 for the preprocessor directives.
1182 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1184 2009-09-30 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1186 * README: Move notes from the hand-edited part of INSTALL which
1187 was overwritten by Automake recently.
1189 2009-09-26 Ivan Maidanski <ivmai@mail.ru>
1191 * aclocal.m4: Regenerate (by autoreconf -vif).
1192 * config.guess: Ditto.
1193 * config.sub: Ditto.
1196 * Makefile.in: Ditto.
1197 * doc/Makefile.in: Ditto.
1198 * src/config.h.in: Ditto.
1199 * src/Makefile.in: Ditto.
1200 * src/atomic_ops/Makefile.in: Ditto.
1201 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1202 * tests/Makefile.in: Ditto.
1204 2009-09-25 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1206 * configure.ac: Replace AC_PROG_CC with AM_PROG_CC_C_O.
1208 2009-09-16 Ivan Maidanski <ivmai@mail.ru>
1210 * ChangeLog: Remove trailing spaces at EOLn.
1211 * doc/README.txt: Expand all tabs to spaces; remove trailing
1212 spaces at EOLn; remove multiple trailing blank lines.
1213 * src/atomic_ops.c: Ditto.
1214 * src/atomic_ops.h: Ditto.
1215 * src/atomic_ops/generalize-small.h: Ditto.
1216 * src/atomic_ops/generalize.h: Ditto.
1217 * src/atomic_ops/sysdeps/acquire_release_volatile.h: Ditto.
1218 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Ditto.
1219 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Ditto.
1220 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Ditto.
1221 * src/atomic_ops/sysdeps/ao_t_is_int.h: Ditto.
1222 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Ditto.
1223 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
1224 * src/atomic_ops/sysdeps/char_acquire_release_volatile.h: Ditto.
1225 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
1226 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
1227 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
1228 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
1229 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
1230 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
1231 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
1232 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
1233 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
1234 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
1235 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
1236 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
1237 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
1238 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
1239 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
1240 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
1241 * src/atomic_ops/sysdeps/icc/ia64.h: Ditto.
1242 * src/atomic_ops/sysdeps/int_acquire_release_volatile.h: Ditto.
1243 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
1244 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
1245 * src/atomic_ops/sysdeps/msftc/arm.h: Ditto.
1246 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
1247 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
1248 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1249 * src/atomic_ops/sysdeps/ordered.h: Ditto.
1250 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
1251 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
1252 * src/atomic_ops/sysdeps/short_acquire_release_volatile.h: Ditto.
1253 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
1254 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
1255 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Ditto.
1256 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1257 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1258 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h: Ditto.
1259 * src/atomic_ops_stack.c: Ditto.
1260 * src/atomic_ops_stack.h: Ditto.
1261 * src/atomic_ops/sysdeps/gcc/arm.h: Replace non-ASCII quotes in a
1263 * src/atomic_ops/sysdeps/gcc/mips.h: Use Unix-style EOLn.
1265 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1268 * src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
1269 (regarding memory barrier).
1270 * src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
1271 AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
1272 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
1273 AO_test_and_set): Replace FIXME with the comment saying it is
1274 emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
1275 * src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
1276 using InterlockedCompareExchange() (assuming the latter has a full
1278 * src/atomic_ops/sysdeps/msftc/arm.h: Include
1279 all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
1280 of pre-ARMv6; add the comment.
1282 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1285 * src/atomic_ops/sysdeps/armcc/arm_v6.h
1286 (AO_compare_double_and_swap_double): Replace false/true with 0/1.
1287 * src/atomic_ops/sysdeps/gcc/arm.h
1288 (AO_compare_double_and_swap_double): Ditto.
1289 * src/atomic_ops/sysdeps/gcc/arm.h: Recognize more ARMv6+
1290 predefined macros (6J, 6ZK, 7A, 7M, 7R).
1291 * src/atomic_ops/sysdeps/gcc/arm.h
1292 (AO_compare_double_and_swap_double): Add "cc" clobber to asm.
1293 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_load_acquire):
1294 Correct the name (convert from the lower case).
1295 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_load_acquire):
1297 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_test_and_set,
1298 AO_compare_and_swap): Comment out unimplemented code (and the
1299 corresponding macros); add FIXME.
1300 * src/atomic_ops.c: Recognize AO_USE_WIN32_PTHREADS overriding
1301 _MSC_VER and __MINGW32__ predefined macros (useful for WinCE with
1302 pthreads-w32 library); don't include signal.h, sys/time.h,
1303 sys/select.h in this case; include windows.h instead.
1304 * src/atomic_ops.c (AO_pause): Use Sleep() in case of
1305 AO_USE_WIN32_PTHREADS (instead of select()).
1306 * src/atomic_ops.c (all_sigs, initialized): Don't define in case
1307 of AO_USE_WIN32_PTHREADS.
1308 * src/atomic_ops.c (AO_compare_and_swap_emulation,
1309 AO_compare_double_and_swap_double_emulation): Don't deal with
1310 signals in case of AO_USE_WIN32_PTHREADS.
1312 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1315 * src/atomic_ops/sysdeps/msftc/arm.h: New file (initial support
1317 * src/atomic_ops/sysdeps/msftc/common32_defs.h: New file.
1318 * src/atomic_ops/sysdeps/msftc/arm.h (AO_ASSUME_ARM_ARCH6): New
1320 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1321 (AO_USE_INTERLOCKED_INTRINSICS): Ditto.
1322 * src/atomic_ops/sysdeps/msftc/x86.h: Move "Interlocked"
1323 declarations to common32_defs.h.
1324 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1325 (AO_INTERLOCKED_VOLATILE): New macro defined (used by
1326 Interlocked-based primitives) for compatibility with older VC++.
1327 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Don't include
1328 missing <intrin.h> if WinCE target.
1329 * src/atomic_ops/sysdeps/msftc/x86.h: Include common32_defs.h
1330 (define AO_USE_INTERLOCKED_INTRINSICS unconditionally).
1331 * src/atomic_ops/sysdeps/msftc/x86.h (AO_fetch_and_add_full,
1332 AO_fetch_and_add1_full, AO_fetch_and_sub1_full,
1333 AO_compare_and_swap_full): Move arch-independent primitives to
1335 * src/atomic_ops/sysdeps/msftc/x86.h: Remove comment about i486 or
1336 better CPU (since Interlocked Add and Xchg primitives are available
1338 * src/atomic_ops.h: Include msftc/x86.h even if _M_IX86 is less than
1340 * src/atomic_ops.h: Include msftc/x86.h if "x86" defined (for WinCE
1342 * src/atomic_ops.h: Include msftc/arm.h if ARM target (for WinCE).
1344 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1347 * src/atomic_ops/sysdeps/msftc/x86.h: Fix comments (prefix
1348 ASSUME_WINDOWS98 with "AO_").
1349 * src/atomic_ops/sysdeps/msftc/x86.h: Prefix ASSUME_VISTA macro with
1351 * src/atomic_ops/sysdeps/msftc/x86.h (AO_nop_full): Replace
1352 K&R-style function definition with ANSI C one.
1353 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full):
1354 Replace AO_TS_SET with its value 0xff (some compilers does not like
1355 C enum consts inside inline assembler).
1356 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full): Add
1357 comment about "missing return value" warning.
1358 * src/atomic_ops/sysdeps/msftc/x86.h
1359 (AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE): New macro.
1360 * src/atomic_ops/sysdeps/msftc/x86.h (AO_compare_and_swap_full): Use
1361 _InterlockedCompareExchange() with args and result of PVOID type
1362 if AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE is defined (mostly for
1363 DigitalMars compiler support).
1364 * src/atomic_ops/sysdeps/msftc/x86.h
1365 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1366 variables ("val1" is the lowest part of AO_double_t).
1367 * src/atomic_ops/sysdeps/msftc/x86.h
1368 (AO_compare_double_and_swap_double_full): Rename to
1369 AO_double_compare_and_swap_full (as it has 3 args).
1370 * src/atomic_ops/sysdeps/msftc/x86.h: Replace C++ style comment
1373 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1376 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove comments about i486
1377 and 32-bit WinChips.
1378 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1379 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Replace
1380 K&R-style function definition with ANSI C one.
1381 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1382 * src/atomic_ops/sysdeps/gcc/x86_64.h
1383 (AO_compare_double_and_swap_double_full): Fix comment.
1384 * src/atomic_ops/sysdeps/gcc/x86_64.h
1385 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1386 variables ("val1" is the lowest part of AO_double_t).
1387 * src/atomic_ops/sysdeps/msftc/x86_64.h
1388 (AO_compare_double_and_swap_double_full): Ditto.
1389 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove comment about
1391 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_ASM_X64_AVAILABLE): New
1393 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1394 "test_and_set_t_is_char.h" if AO_ASM_X64_AVAILABLE (same as in
1395 x86_64.h for gcc); remove FIXME (for re-implement test-and-set).
1396 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1397 "standard_ao_double_t.h" (same as in x86_64.h for gcc).
1398 * src/atomic_ops/sysdeps/msftc/x86_64.h: Add comment for include
1399 <intrin.h> assuming at least VC++ v8.
1400 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove _Interlocked
1401 prototypes (since they are always declared in intrin.h).
1402 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Move its
1403 definition below CAS primitive (to textually group all asm-based
1404 primitives together).
1405 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_test_and_set_full):
1406 Implement for AO_ASM_X64_AVAILABLE case.
1407 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove AO_CASDOUBLE_MISSING
1408 macro (replaced with AO_ASM_X64_AVAILABLE).
1409 * src/atomic_ops/sysdeps/msftc/x86_64.h
1410 (AO_compare_double_and_swap_double_full): Add intrinsic-based
1411 implementation for VC++ v9+.
1412 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Include
1413 <xmmintrin.h> (and use "__m128" type) if _WIN64.
1414 * src/atomic_ops/sysdeps/standard_ao_double_t.h
1415 (AO_HAVE_DOUBLE_PTR_STORAGE): Define it always (as
1416 "double_ptr_storage" is defined for all cases).
1418 2009-09-09 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1420 * src/atomic_ops/sysdeps/gcc/sparc.h (NO_SPARC_V9):
1421 Renamed to AO_NO_SPARC_V9.
1423 2009-09-01 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1425 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
1426 AO_TS_VAL_t for "oldval" (for 64-bit support).
1427 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
1428 New function implemented.
1430 2009-08-12 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1431 (diff107_cvs, resembling diff78 and diff88_cvs)
1433 * src/atomic_ops/sysdeps/sunc/x86.h: New file.
1434 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1435 * src/atomic_ops.h (AO_INLINE): Support inlining for DigitalMars,
1437 * src/atomic_ops.h (AO_compiler_barrier): Use intrinsic-based
1438 implementation for VC++ v8+ (include <intrin.h> before it unless
1439 WinCE target); use asm-based barrier implementation for Borland,
1440 DigitalMars and Watcom.
1441 * src/atomic_ops.h: Fix comment (for x86_64).
1442 * src/atomic_ops.h: Include specialized x86.h and x86_64.h arch
1443 headers for Sun C (if not AO_USE_PTHREAD_DEFS).
1444 * src/atomic_ops.h: Include VC-specific arch headers for Borland,
1445 DigitalMars and Watcom (Win32 target only).
1447 2009-05-27 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1448 (diff87_cvs, resembling diff29, diff68, diff78 partly)
1450 * doc/README.txt: Remove outdated info about Windows support.
1451 * src/atomic_ops/generalize.h (AO_nop_full): Replace
1452 K&R-style function definition with ANSI C one.
1453 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Ditto.
1454 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_nop_full, AO_nop_write):
1456 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Ditto.
1457 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_nop_full): Ditto.
1458 * src/atomic_ops/sysdeps/gcc/mips.h (AO_nop_full): Ditto.
1459 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_nop_full, AO_lwsync): Ditto.
1460 * src/atomic_ops/sysdeps/gcc/x86.h (AO_nop_full): Ditto.
1461 * src/atomic_ops/sysdeps/generic_pthread.h (AO_nop_full): Ditto.
1462 * src/atomic_ops/sysdeps/hpc/ia64.h (AO_nop_full): Ditto.
1463 * src/atomic_ops/sysdeps/icc/ia64.h (AO_nop_full): Ditto.
1464 * src/atomic_ops/sysdeps/ordered.h (AO_nop_full): Ditto.
1465 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_nop_write): Ditto.
1466 * src/atomic_ops/sysdeps/read_ordered.h (AO_nop_read): Ditto.
1467 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h (AO_TS_val): Fix
1470 2009-02-24 Hans Boehm <Hans.Boehm@hp.com> (Really primarily Earl Chew)
1472 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add index,
1473 update modifiers to asms, refine clobbers to "cr0", use
1474 cr0 instead of cr7, add explicit AO_fetch_and_add,
1475 add UNTESTED 64 bit support.
1477 2008-11-10 Hans Boehm <Hans.Boehm@hp.com> (Really Joerg Wagner)
1479 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Compute
1480 AO_compare_and_swap value differently, add
1481 AO_compare_double_and_swap_double, some indentation fixes.
1482 * src/atomic_ops/sysdeps/gcc/arm.h: Make gcc asm code more
1483 robust and minimize clobbers, Add AO_compare_double_and_swap_double.
1485 2008-11-06 Hans Boehm <Hans.Boehm@hp.com>
1487 * INSTALL: Add some platform-specific documentation.
1488 * src/Makefile.msft: Fix copyright notice.
1490 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1492 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
1493 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
1494 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
1495 * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
1496 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
1497 * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
1498 * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
1499 * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
1500 * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
1501 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
1502 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
1503 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
1504 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix comments.
1505 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
1506 * src/atomic_ops.c: Fix comments.
1507 * src/atomic_ops.h: Fix comments.
1508 * src/atomic_ops_stack.c: Fix comments.
1509 * src/atomic_ops_stack.h: Fix comments.
1511 2008-10-20 Hans Boehm <Hans.Boehm@hp.com> (really Andrew Agno)
1513 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
1516 2008-08-21 Hans Boehm <Hans.Boehm@hp.com>
1518 * config.guess, config.sub, configure: Regenerate/replace.
1519 Use autoconf 2.61, automake 1.9.6.
1521 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Thiemo Seufer)
1523 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz
1526 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Sebastian Siewior)
1528 * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__.
1530 2008-07-24 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1532 * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h:
1533 Add parentheses around addr arg for various functions.
1535 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1537 * src/atomic_ops/sysdeps/gcc/powerpc.h:
1538 Add const to first parameter of load calls (forgot one).
1540 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1542 * doc/README.txt, src/atomic_ops/generalize.h,
1543 src/atomic_ops/generalize-small.template,
1544 src/atomic_ops/generalize-small.h,
1545 src/atomic_ops/sysdeps/acquire_release_volatile.h,
1546 src/atomic_ops/sysdeps/char_acquire_release_volatile.h,
1547 src/atomic_ops/sysdeps/int_acquire_release_volatile.h,
1548 src/atomic_ops/sysdeps/short_acquire_release_volatile.h,
1549 src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1550 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1551 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
1552 src/atomic_ops/sysdeps/ao_t_is_int.h,
1553 src/atomic_ops/sysdeps/atomic_load_store.h,
1554 src/atomic_ops/sysdeps/char_atomic_load_store.h,
1555 src/atomic_ops/sysdeps/int_atomic_load_store.h,
1556 src/atomic_ops/sysdeps/short_atomic_load_store.h,
1557 src/atomic_ops/sysdeps/generic_pthread.h,
1558 src/atomic_ops/sysdeps/read_ordered.h,
1559 src/atomic_ops/sysdeps/sysdeps/armcc/arm_v6.h,
1560 src/atomic_ops/sysdeps/gcc/arm.h,
1561 src/atomic_ops/sysdeps/icc/ia64.h,
1562 src/atomic_ops/sysdeps/ibmc/powerpc.h:
1563 Add const to first parameter of load calls.
1565 2008-07-10 Hans Boehm <Hans.Boehm@hp.com>
1567 * src/atomic_ops/sysdeps/gcc/m68k.h: Remove SMP-unsafe
1568 AO_or_full, and let it be autogenerated instead.
1570 2008-07-03 Hans Boehm <Hans.Boehm@hp.com> (Really Thiemo Seufer)
1572 * src/atomic_ops/sysdeps/gcc/mips.h: Really add mips support,
1573 fixing a merge accident.
1575 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1578 * doc/Makefile.in, src/Makefile.in, src/atomic_ops/Makefile.in:
1581 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1584 * src/atomic_ops.h, src/atomic_ops/sysdeps/Makefile.am,
1585 src/atomic_ops/sysdeps/gcc/mips.h: Add mips support.
1586 * src/atomic_ops/sysdeps/gcc/m68k.h: Make test_and_set work
1587 on char, align AO_t. Add cas, or.
1588 * src/atomic_ops/sysdeps/gcc/s390.h: Fix include paths.
1589 * src/atomic_ops/generalize.h: Fix AO_compare_and_swap_double_acquire.
1590 * Makefile.in, aclocal.m4, src/atomic_ops/sysdeps/Makefile.in,
1591 tests/Makefile.in: Regenerate.
1593 2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
1594 (Really Ian Wienand & Debian maintainers)
1596 * src/atomic_ops/sysdeps/gcc/x86.h
1597 (AO_compare_double_and_swap_double_full): Correctly account for
1600 2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
1602 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
1603 double_ptr_storage default to long long; define everywhere.
1605 2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1607 * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
1608 compare_double_and_swap_double.
1610 2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1612 * src/atomic_ops/generalize.h: Add test_and_set generalizations,
1613 Add AO_double_compare_and_swap generalizations.
1614 * src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
1615 * src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
1616 * src/atomic_ops/sysdeps/gcc/x86.h,
1617 src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
1618 compare_double_and_swap_double, commented out for msftc.
1619 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
1620 double_ptr_storage field.
1622 2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
1623 (Merge from separate atomic_ops tree)
1625 * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
1626 double-width cas, and fix its implementation.
1627 * doc/README.txt: Clarify use of _full. Add more warnings about
1630 2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
1632 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1633 %X1 modifier to support indexed addressing.
1635 2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
1637 * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
1640 2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
1642 * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
1645 2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
1647 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1650 2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
1652 * src/atomic_ops.h: include stddef.h
1654 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
1656 * src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
1657 * src/atomic_ops.h: Add test for msftc/x86_64.h.
1658 * src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
1659 * src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
1660 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1661 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1662 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1663 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
1664 Replace unsigned long cast with size_t.
1666 2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
1668 * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
1669 Add cast for return.
1671 2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
1673 * doc/README.txt: Update to reflect C++0x effort.
1675 2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
1677 * src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
1679 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
1682 2006-11-09 Earl Chew (Agilent)
1684 * msftc/x86.h: Follow Microsoft documentation and include
1689 2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
1691 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
1693 2006-03-28 Earl Chew (Agilent)
1695 * src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
1696 * src/atomic_ops/sysdeps/msftc/x86.h:
1697 Use new intrinsics available in MSVC 2003 and MSVC 2005.
1698 Use inline assembler to generate mfence and byte sized xchg
1699 Use correct prototype for InterlockedCompareExchange.
1700 * src/atomic_ops.h: Add test for __PPC__ .
1701 * tests/run_parallel.inc: Add simple VxWorks support.
1702 * tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
1703 to silence compiler warnings.
1705 2006-11-13 Hans Boehm <Hans.Boehm@hp.com>
1707 * src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
1708 * src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
1710 2005-11-04 Hans Boehm <Hans.Boehm@hp.com>
1712 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1713 all_acquire_release_volatile.h, instead of just the pointer-sized
1715 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1716 all_acquire_release_volatile.h and all_atomic_load_store.h,
1717 instead of just the pointer-sized versions.
1721 2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
1723 * src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
1724 * src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
1725 ordered_except_wr.h.
1726 * src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
1727 instead of duplicating it.
1728 * src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
1730 2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
1732 * src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
1733 definition with one that might actually work. (Thanks to Kazu
1734 Hirata and Paul Brook.)
1736 2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
1738 * src/atomic_ops/Makefile.am: Change function naming from "byte" to
1743 2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
1744 Fix various acquire_release_volatile.h files to reflect the fact
1745 that both icc and gcc seem to reorder ordinary memory accesses around
1746 volatile accesses early in the compilation. Modify the acquire
1747 release test to catch this problem (with high probability, and only on
1750 2005-03 Hans Boehm <Hans.Boehm@hp.com>
1751 Fixes for recently introduced bugs. Update x86 and x86-64 assembly
1752 syntax to deal with complaints by some recent gcc versions.
1754 2005-02 Hans Boehm <Hans.Boehm@hp.com>
1755 Added libatomic_ops_gpl library with support for mostly
1756 lock-free stack and malloc().
1758 2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
1759 Hans Boehm <Hans.Boehm@hp.com>
1760 Use autoconf, automake, starting with code from Debian package.
1763 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1764 * test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
1765 Change most platforms to use byte-wide test-and-set locations.
1767 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1768 * ao_t_is_int.h: Add to trivially support int-wide operations
1769 on platforms with int-sized pointers.
1771 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1772 * gcc/powerpc.h: First serious attempt to support PowerPC (with
1773 help from Maged Michael and others).
1775 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1776 * sunc/sparc.[hS]: Added minimal support for the Sun SPARC compiler.
1777 * atomic_ops_sysdeps.S: Add support for platforms that require
1778 out-of-line assembly code.
1780 2004-10 Hans Boehm <Hans.Boehm@hp.com>
1781 More work on char, short, int sized data. Add both
1782 compare_double_and_swap_double and compare_and_swap_double.
1783 Typically each platform will provide at most one of these.
1785 2004-07-02 Ranko Zivojnovic
1786 Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
1788 2004-06 Hans Boehm <Hans.Boehm@hp.com>
1789 Start to add atomic_ops primitives for different sized data.
1791 2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
1793 * atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
1794 Fix support for ecc on IA64. Remove compiler_barrier workaround
1795 for gcc 3.4 and later.
1797 2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
1799 * atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
1800 atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
1801 Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
1802 for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
1803 compiler on PA_RISC and IA64.
1805 2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
1807 * many: Install under "atomic_ops" instead of "ao".
1808 Change atomic_ops include file structure. Auxiliary include
1809 files are all under include/atomic_ops.
1810 Fix (hopefully) "make dist" in atomic_ops distribution.
1811 Renamed various types to end in _t, though the old versions
1812 are still defined for backward compatibility.
1814 2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
1816 * ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
1817 AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
1818 helper macros. AO_test_and_set_full uses helper macros.
1821 Started sometime after version 0.4 release. Currently the format is
1822 informal. Eventually should become more GNU-like.