3 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
5 * README: Bump version to 7.2f (rev. F).
7 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
9 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
10 automake-1.14.1 and libtool-2.4.2.418).
12 * Makefile.in: Likewise.
13 * aclocal.m4: Likewise.
14 * config.guess: Likewise.
15 * config.sub: Likewise.
16 * doc/Makefile.in: Likewise.
18 * src/Makefile.in: Likewise.
19 * src/atomic_ops/Makefile.in: Likewise.
20 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
21 * src/config.h.in: Likewise.
22 * test-driver: Likewise.
23 * tests/Makefile.in: Likewise.
25 2014-03-28 Jan-Erik Rediger <badboy@archlinux.us>
27 * doc/README.txt: Remove redundant "an" article (fix typo).
31 2013-11-10 Ivan Maidanski <ivmai@mail.ru>
33 * README: Bump version to 7.2e (rev. E).
35 2013-08-31 Ivan Maidanski <ivmai@mail.ru>
37 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
38 automake-1.13.4 and libtool-2.4.2).
40 * Makefile.in: Likewise.
41 * aclocal.m4: Likewise.
43 * config.guess: Likewise.
44 * config.sub: Likewise.
46 * doc/Makefile.in: Likewise.
47 * install-sh: Likewise.
49 * mkinstalldirs: Likewise.
50 * src/Makefile.in: Likewise.
51 * src/atomic_ops/Makefile.in: Likewise.
52 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
53 * tests/Makefile.in: Likewise.
54 * test-driver: New generated file.
56 2013-08-18 Ivan Maidanski <ivmai@mail.ru>
58 * aclocal.m4: Regenerate (by autoreconf -vif).
60 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
62 * src/atomic_ops/sysdeps/gcc/arm.h
63 (AO_compare_double_and_swap_double): Do not define for
64 pre-Clang3.3 (since the latter does not allocate register pairs for
65 LDREXD/STREXD instructions properly); add comment.
67 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
69 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_double_and_swap_double):
70 Swap assembly code operands ("new_val" and "addr") to prevent
71 Clang3.3 warning about operand truncation.
73 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
75 * src/atomic_ops/sysdeps/gcc/arm.h
76 (AO_compare_double_and_swap_double): Specify that LDREXD and STREXD use
77 2 adjacent registers (thus preventing Clang3.3 from register allocation
78 failures leading to "registers may not be the same" or
79 "even register required" GAS errors).
81 2013-07-30 Ivan Maidanski <ivmai@mail.ru>
83 * src/atomic_ops/generalize.h: Fix a typo in comment
86 2013-04-03 Manuel Serrano <Manuel.Serrano@inria.fr>
88 * configure.ac (AM_CONFIG_HEADER): Replace obsolete macro with with
89 AC_CONFIG_HEADERS one.
91 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
93 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
94 Do not use AO_EXPECT_FALSE (since defined only in v7.3+).
95 * src/atomic_ops/generalize-small.h: Regenerate.
97 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
99 * src/atomic_ops/sysdeps/sunc/x86.h (AO_fetch_and_add_full,
100 AO_char_fetch_and_add_full, AO_short_fetch_and_add_full, AO_or_full,
101 AO_test_and_set_full,
102 AO_compare_and_swap_full): Use "+m" asm constraint for *addr instead
103 of "=m" (because the value pointed by addr is read and written by the
106 2013-03-13 Ivan Maidanski <ivmai@mail.ru>
108 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Use "+m"
109 asm constraint for *addr instead of "=m" (because the value pointed by
110 addr is read and written by the code).
112 2013-03-12 Ivan Maidanski <ivmai@mail.ru>
114 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap): Use "+m"
115 asm constraint for *addr instead of "+R" (the letter is unsupported
116 by clang3.1 resulting in "invalid output constraint in asm" error).
118 2013-02-14 Ivan Maidanski <ivmai@mail.ru>
120 * src/atomic_ops/sysdeps/gcc/arm.h: Do not include read_ordered.h
121 (because load_acquire should contain a DMB instruction in a multi-core
122 case, new load_acquire/read primitives implementation is generalized
123 using nop_full/read which either contain a DMB instruction, or is just
124 a compiler barrier for uniprocessor).
125 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Likewise.
126 * src/atomic_ops/sysdeps/msftc/arm.h: Likewise.
128 2013-01-15 Ivan Maidanski <ivmai@mail.ru>
130 * doc/README.txt (_acquire_read): Add information about memory
131 barrier (similar as in atomic_ops.h).
132 * doc/README.txt (_release_read): Remove information about
133 non-existing barrier.
135 2013-01-14 Ivan Maidanski <ivmai@mail.ru>
137 * src/atomic_ops/sysdeps/ao_t_is_int.h: Fix a typo in comment.
139 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
141 * src/atomic_ops/sysdeps/ao_t_is_int.h
142 (AO_int_load_acquire, AO_int_fetch_and_add_full,
143 AO_int_fetch_and_add1_acquire, AO_int_fetch_and_add1_release,
144 AO_int_fetch_and_sub1_acquire, AO_int_fetch_and_sub1_release): Cast
145 result to unsigned int instead of signed int.
147 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
149 * src/atomic_ops/sysdeps/gcc/s390.h: Move include of
150 ordered_except_wr.h down to be after all_aligned_atomic_load_store.h
151 inclusion (since the latter defines AO_X_load/store primitives used by
154 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
156 * src/atomic_ops/sysdeps/msftc/arm.h: Fix a typo in comment (about
159 2013-01-07 Ivan Maidanski <ivmai@mail.ru>
161 * src/atomic_ops/sysdeps/read_ordered.h (AO_char_load_read,
162 AO_short_load_read, AO_int_load_read): Change return type (and the
163 type of "result" local variable) from AO_t to the type matching the
164 name of the function (i.e., unsigned char/short/int, respectively).
166 2013-01-06 Ivan Maidanski <ivmai@mail.ru>
168 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Insert
169 AO_compiler_barrier for AO_UNIPROCESSOR case.
170 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Likewise.
171 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Likewise.
172 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Refine comment.
174 2013-01-05 Ivan Maidanski <ivmai@mail.ru>
176 * src/atomic_ops/Makefile.in: Regenerate (by autoreconf -vif).
178 2013-01-04 Ivan Maidanski <ivmai@mail.ru>
180 * src/atomic_ops/Makefile.am (BUILT_SOURCES): Define to force
181 regeneration of generalize-small.h (if the corresponding
182 source template is changed) before compilation of .c files (that use
185 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
187 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
188 Add missed definition based on CAS.
189 * src/atomic_ops/generalize-small.h: Regenerate.
191 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
193 * src/atomic_ops/generalize-small.template (AO_XSIZE_load): Move
194 definition (which is based on AO_XSIZE_load_acquire) down to be after
195 AO_XSIZE_load_acquire definition.
196 * src/atomic_ops/generalize-small.template (AO_XSIZE_store): Move
197 definition (which is based on AO_XSIZE_store_release) down to be after
198 AO_XSIZE_store_release definition.
199 * src/atomic_ops/generalize-small.h : Regenerate.
201 2012-10-09 Ivan Maidanski <ivmai@mail.ru>
203 * tests/test_stack.c (run_one_test): Change type of "index" local
204 variable from long to int to match printf format specifier (when
205 VERBOSE defined); cast from "arg" pointer to integer via size_t (to
206 avoid 64-bit compiler warning).
208 2012-10-08 Ivan Maidanski <ivmai@mail.ru>
210 * src/atomic_ops/sysdeps/gcc/x86.h (AO_double_compare_and_swap_full):
211 New function (only if __x86_64__) implemented using GCC built-in
212 __sync CAS primitive available for x32.
213 * src/atomic_ops/sysdeps/gcc/x86.h
214 (AO_HAVE_double_compare_and_swap_full): New macro (for x32 only).
215 * src/atomic_ops/sysdeps/gcc/x86.h
216 (AO_compare_double_and_swap_double_full): Implement using
217 double_compare_and_swap_full instead of cmpxchg8b for x32 (since
218 x86_64 has cmpxchg and cmpxchg16b but not cmpxchg8b).
220 2012-10-05 Ivan Maidanski <ivmai@mail.ru>
222 * src/atomic_ops.h: Fix typos in comments (update generalize.h
225 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
227 * src/atomic_ops.c (AO_pause): Fix millis value (passed to Win32
228 Sleep) for the case of 'n' argument in range between 12 and 21,
229 inclusive if AO_USE_WIN32_PTHREADS (sleep for 1 ms in this case).
230 * src/atomic_ops_stack.c (AO_pause): Evaluate 'msecs' value using the
231 same algorithm as in atomic_ops.c (Win32 only).
233 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
235 * src/atomic_ops_stack.c (dummy): Define as static (to make symbol
236 without AO_ prefix visible only within this file); initialize to 1
237 (same as in atomic_ops.c, so that AO_spin would never really alter
240 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
242 * src/atomic_ops.h: Fix 'load' primitive name in comment (replace
243 AO_load_release_read with AO_load_acquire_read).
245 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
247 * src/atomic_ops/sysdeps/emul_cas.h
248 (AO_compare_double_and_swap_double_full): Test (define if)
249 AO_HAVE_compare_double_and_swap_double_full macro instead of
250 AO_HAVE_compare_double_and_swap_double.
252 2012-10-01 Ivan Maidanski <ivmai@mail.ru>
254 * src/atomic_ops/sysdeps/standard_ao_double_t.h (double_ptr_storage):
255 Define as "unsigned long long" instead of __m128 for gcc/x32 (i.e.,
256 ILP32 on x86_64); update and reformat comment.
258 2012-09-19 Ivan Maidanski <ivmai@mail.ru>
260 * configure: Regenerate (by autoreconf -vif using autoconf-2.68,
261 automake-1.11.3 and libtool-2.4.2).
263 * Makefile.in: Likewise.
264 * aclocal.m4: Likewise.
266 * config.guess: Likewise.
267 * config.sub: Likewise.
269 * doc/Makefile.in: Likewise.
270 * install-sh: Likewise.
272 * src/Makefile.in: Likewise.
273 * src/atomic_ops/Makefile.in: Likewise.
274 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
275 * tests/Makefile.in: Likewise.
277 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
279 * src/atomic_ops.h: Include gcc/x86.h instead of gcc/x86_64.h if
280 gcc/x32 (i.e., GCC (or Intel compiler), __x86_64__ is defined, and
281 __ILP32__ is defined) to have AO_compare_double_and_swap_double_full
282 defined properly (based on cmpxchg8b); explicitly define
283 AO_USE_PENTIUM4_INSTRS for gcc/x32.
284 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove ILP32-specific code
285 (AO_T_IS_INT definition).
287 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
289 * src/atomic_ops/sysdeps/sunc/x86_64.h
290 (AO_compare_double_and_swap_double_full): Fix inline assembly
291 arguments commenting out "m"(*addr) one (similar to that in
292 sunc/x86.h) if AO_CMPXCHG16B_AVAILABLE defined.
294 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
296 * src/atomic_ops/sysdeps/gcc/x86_64.h
297 (AO_compare_double_and_swap_double_full): Fix a typo in comment.
298 * src/atomic_ops/sysdeps/sunc/x86_64.h
299 (AO_compare_double_and_swap_double_full): Likewise.
301 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
303 * tests/test_atomic.c (acqrel_thr): Call abort() after fprintf(stderr).
304 * tests/test_malloc.c (run_one_test): Likewise.
305 * tests/test_stack.c (check_list, main): Likewise.
307 2012-09-05 Ivan Maidanski <ivmai@mail.ru>
309 * src/atomic_ops/sysdeps/gcc/x86.h
310 (AO_compare_double_and_swap_double_full): Re-implement for PIC mode
311 saving EBX to a local variable (instead of pushing it to stack) and
312 saving memory operand address to a register (edi which is manually
313 preserved), so that the whole code could also work even if EBX points
314 to memory operand (e.g., in Clang); test __PIC__ using ifdef (instead
315 of "if"); update comments; reformat code.
319 2012-08-09 Ivan Maidanski <ivmai@mail.ru>
321 * README: Change version to 7.2d (rev. D).
323 2012-08-01 Ivan Maidanski <ivmai@mail.ru>
325 * src/atomic_ops.h (AO_compiler_barrier): Add parentheses and cast to
328 2012-07-12 Ivan Maidanski <ivmai@mail.ru>
330 * config.guess: Regenerate (by autoreconf -vif using autoconf-2.68,
331 automake-1.11.1 and libtool-2.4).
332 * config.sub: Likewise.
334 2012-07-04 Ivan Maidanski <ivmai@mail.ru>
336 * src/atomic_ops/sysdeps/gcc/x86.h
337 (AO_compare_double_and_swap_double_full): Use EDI register for
338 "new_val1" argument in PIC mode only for GCC 4.3+ to workaround
339 a problem with older compiler versions (e.g., GCC 4.2.1 [FreeBSD])
340 that do not recognize 'D' as a valid register specification; update
343 2012-07-01 Ivan Maidanski <ivmai@mail.ru>
345 * src/atomic_ops/generalize-small.template
346 (AO_XSIZE_fetch_and_add_full,
347 AO_XSIZE_fetch_and_add_acquire, AO_XSIZE_fetch_and_add_release):
348 Fix type of function result by adding
349 'unsigned' to XCTYPE.
350 * src/atomic_ops/generalize-small.h: Regenerate.
354 2012-05-11 Ivan Maidanski <ivmai@mail.ru>
356 * configure.ac, README: Bump version to 7.2 (final).
357 * configure: Regenerate.
359 2012-05-01 H.J. Lu <hjl.tools@gmail.com>
361 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_fetch_and_add_full,
362 AO_and_full, AO_or_full, AO_xor_full, AO_compare_and_swap_full):
363 Remove 'q' suffix in asm instruction.
365 2012-04-16 H.J. Lu <hjl.tools@gmail.com>
367 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_T_IS_INT): Defined
370 2012-03-28 Ivan Maidanski <ivmai@mail.ru>
372 * configure.ac (PICFLAG): Adjust AC_MSG_CHECKING message; report
373 "none" result if no -fPIC is needed (for Cygwin/MinGW); determine
374 whether GCC -fPIC option causes __PIC__ macro definition; pass
375 -D __PIC__ to PICFLAG (instead of CFLAGS) only if not defined
376 automatically in case -fPIC specified; update comment.
378 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
380 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Do not use __m128
381 if GCC pre-v4 (at least, xmmintrin.h is missing in gcc-3.4.3-x86_64
382 included in Solaris 10 distribution).
384 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
386 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Fix a typo in
389 2012-03-19 Ivan Maidanski <ivmai@mail.ru>
391 * configure: Regenerate.
392 * Makefile.in: Likewise.
394 2011-08-14 Petter Urkedal <paurkedal@gmail.com>
396 * atomic_ops.pc.in -> pkgconfig/atomic_ops.pc.in: Moved.
397 * pkgconfig/atomic_ops-uninstalled.pc.in: Added developer version.
398 * configure.ac, Makefile.am: Update accordingly.
400 2011-08-04 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
402 * atomic_ops.pc.in: new file.
403 * Makefile.am (pkgconfigdir, pkgconfig_DATA): new items.
404 * configure.ac (AC_CONFIG_FILES): add atomic_ops.pc.
405 * configure, Makefile.in: Regenerate.
407 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
409 * src/atomic_ops/sysdeps/gcc/x86.h
410 (AO_compare_double_and_swap_double_full): Use EDI register for
411 "new_val1" argument instead of a memory operand and use XCHG assembler
412 instruction instead of push/pop in case of PIC mode (to workaround
413 a bug in GCC 4.6.1); update the comment.
415 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
417 * src/atomic_ops_stack.c (AO_stack_push_release): Make "cptr" local
418 variable volatile to workaround a bug in clang-1.1/x86 compiler; add
421 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
423 * src/atomic_ops/sysdeps/gcc/x86.h
424 (AO_compare_double_and_swap_double_full): Fix argument name in the
426 * src/atomic_ops/sysdeps/sunc/x86.h
427 (AO_compare_double_and_swap_double_full): Likewise.
429 2012-03-04 Ivan Maidanski <ivmai@mail.ru>
431 * src/atomic_ops_malloc.h (AO_malloc_enable_mmap): Fix a typo in the
434 2012-01-19 Ivan Maidanski <ivmai@mail.ru>
436 * tests/test_atomic.c (main): Put "void" keyword into the arguments
437 specification of the function prototype.
438 * tests/test_stack.c (main): Likewise.
440 2011-12-16 Ivan Maidanski <ivmai@mail.ru>
442 * src/atomic_ops/sysdeps/gcc/arm.h (__ARM_ARCH_7__, __ARM_ARCH_7A__):
443 Recognize to override __ARM_ARCH_5xx__ macros (since Android NDK GCC
444 defines both for armv7); update comment.
446 2011-11-29 Ivan Maidanski <ivmai@mail.ru>
448 * src/atomic_ops/sysdeps/gcc/hexagon.h: Include generalize.h file
449 before ao_t_is_int.h one.
450 * src/atomic_ops/sysdeps/gcc/ia64.h: Likewise.
451 * src/atomic_ops/sysdeps/hpc/ia64.h: Likewise.
453 2011-11-03 Ivan Maidanski <ivmai@mail.ru>
455 * src/atomic_ops/generalize-small.template
456 (AO_XSIZE_fetch_and_add_full, AO_XSIZE_fetch_and_add_acquire,
457 AO_XSIZE_fetch_and_add_release): Change return type from AO_t to
459 * src/atomic_ops/generalize-small.h: Regenerate.
461 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
463 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap_full):
464 Change "result" local variable type from AO_t to int.
465 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_compare_and_swap_full):
468 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
470 * tests/test_atomic_include.h: Regenerate.
472 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
474 * tests/test_atomic_include.template (test_atomicXX): Add action for
475 the missing AO_compare_and_swap primitive.
477 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
479 * src/atomic_ops.c (init_lock): Define only unless AO_USE_NO_SIGNALS.
481 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
483 * doc/README.txt: Fix a typo.
485 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
487 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Cast
488 returned value to int.
490 2011-10-17 Ivan Maidanski <ivmai@mail.ru>
492 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
494 2011-10-17 Ivan Maidanski <ivmai@mail.ru> (really Thorsten Glaser)
496 * src/atomic_ops/sysdeps/gcc/m68k.h (AO_test_and_set_full): Cast the
499 2011-10-15 Ivan Maidanski <ivmai@mail.ru>
501 * src/atomic_ops/sysdeps/gcc/s390.h (AO_compare_and_swap_full):
502 Change return from AO_t to int.
503 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_compare_and_swap_acquire,
504 AO_compare_and_swap_release, AO_compare_and_swap_full): Likewise.
506 2011-10-11 Ivan Maidanski <ivmai@mail.ru> (really Linas Vepstas)
508 * src/atomic_ops/sysdeps/Makefile.am (nobase_private_HEADERS): Add
510 * src/atomic_ops.h: Include hexagon.h file.
511 * src/atomic_ops/sysdeps/gcc/hexagon.h: New file.
513 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
516 (AO_non_posix_implementation_is_entirely_in_headers): Make external.
518 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
520 * configure: Regenerate.
521 * tests/Makefile.in: Ditto.
522 * tests/test_atomic_include.h: Ditto.
524 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
526 * configure.ac (PICFLAG, THREADDLLIBS): Define as empty for MinGW.
527 * configure.ac (have_pthreads): New definition (set to true unless
529 * configure.ac (HAVE_PTHREAD_H): New AM conditional (based on
530 have_pthreads value).
531 * tests/Makefile.am (test_atomic_pthreads_SOURCES,
532 test_atomic_pthreads_CPPFLAGS, test_atomic_pthreads_LDADD): Define
533 only if HAVE_PTHREAD_H.
534 * tests/Makefile.am (TESTS): Don't include test_atomic_pthreads unless
536 * tests/Makefile.am (check_PROGRAMS): Define to TESTS value.
538 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
540 * configure.ac (PICFLAG): Set to -fPIC if GCC but not Gygwin.
542 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
544 * tests/test_malloc.c (LIST_LENGTH, LARGE_OBJ_SIZE): Define to
545 a smaller value unless HAVE_MMAP.
547 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
549 * tests/test_malloc.c (cons, run_one_test): Call exit with a non-zero
550 code (instead of abort) if out of memory.
551 * tests/test_stack.c (add_elements): Likewise.
552 * tests/test_stack.c (main): Use a distinct exit code if a thread
555 2011-09-15 Ivan Maidanski <ivmai@mail.ru>
557 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo (replace AO_FORCE_CAS
558 with AO_REQUIRE_CAS in a comment).
560 2011-09-08 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
562 * src/Makefile.am, tests/Makefile.am: Set compiler include paths
563 to $(top_builddir)/src and $(top_srcdir)/src.
564 * src/Makefile.in: Regenerate.
565 * tests/Makefile.in: Ditto.
567 2011-07-14 Ivan Maidanski <ivmai@mail.ru>
569 * tests/list_atomic.template (list_atomicXX): Remove "addr" local
570 variable (use "&val" instead); initialize "newval" and "oldval"
571 local variables; rename "tsaddr" local variable to "ts" one.
572 * tests/list_atomic.template (list_atomicXX): Fix
573 AO_test_and_setXX call (pass address instead of value).
574 * tests/list_atomic.template: Expand all tabs to spaces; remove
575 trailing spaces at EOLn.
576 * tests/run_parallel.inc: Ditto.
577 * tests/test_atomic.c: Ditto.
578 * tests/list_atomic.c: Regenerate.
579 * tests/run_parallel.inc (AO_PTRDIFF_T): New macro.
580 * tests/run_parallel.inc (tramp): Cast between pointer and integer
581 types via casting to AO_PTRDIFF_T.
582 * tests/test_atomic.c (add1sub1_thr, acqrel_thr): Ditto.
583 * tests/run_parallel.inc (run_parallel): Adjust printf format
584 specifiers for DWORD parameters.
585 * tests/test_stack.c: Skip test if no pthreads.
587 2011-06-27 Ivan Maidanski <ivmai@mail.ru> (really Jeremy Huddleston)
589 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
590 Explicitly cast 0xff to unsigned char (otherwise LLVM v2.7 GAS
591 reports an error); don't recognize AO_XCHGB_RET_WORD.
592 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
595 2011-06-15 Ivan Maidanski <ivmai@mail.ru>
597 * configure.ac, README: Change to version 7.2alpha7.
598 * configure: Regenerate.
602 2011-06-14 Ivan Maidanski <ivmai@mail.ru>
604 * configure.ac, README: Change to version 7.2alpha6.
605 * configure: Regenerate.
607 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
609 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_load): Do not
610 define for pre-ARMv6 directly (revert part of the previous
612 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set,
613 AO_test_and_set_full): Refine the comment.
614 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Define
615 SWP-based implementation at the end of file (if none of
616 AO_test_and_set functions are defined previously).
617 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Remove
618 SWP-based implementation (revert part of the previous commit).
619 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store): Remove redundant
620 definition at the file end (revert part of the previous commit).
622 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
624 * src/atomic_ops/sysdeps/gcc/arm.h: Handle ARMv6M architecture.
625 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Force "swp"
626 instruction usage (instead of ldrex/strex) if AO_FORCE_USE_SWP;
628 * src/atomic_ops/sysdeps/gcc/arm.h
629 (AO_compare_double_and_swap_double): Handle ARMv7EM architecture
631 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set, AO_nop_full,
632 AO_load, AO_store): Define at the end of file (in case not defined
635 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
637 * src/atomic_ops/generalize.h: Reformat code.
638 * src/atomic_ops/generalize.h (AO_test_and_set_acquire): Fix
640 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_test_and_set): Ditto.
641 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Ditto.
642 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Add
643 a comment (about SWP instruction).
645 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
647 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
648 AO_THUMB_RESTORE_MODE): Use single-digit labels (to workaround
649 a bug in GCC v4.2.1 which reports "garbage following instruction"
651 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Use "IT"
652 instruction only for Thumb-2 mode.
654 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
656 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
657 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define as empty
659 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
660 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
661 AO_compare_and_swap, AO_compare_double_and_swap_double): Remove
662 unnecessary "memory" keyword from the list of clobbered registers
663 (revert part of the previous commit).
664 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Add
665 a comment for "IT" instruction.
666 * src/atomic_ops/sysdeps/gcc/arm.h
667 (AO_compare_double_and_swap_double): Don't define on the
668 architectures where unimplemented; add a comment; replace return
669 (in the loop) statement with break.
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 new
675 macro (to switch temporarily CPU mode to ARM in inline assembler
676 if compiling in the Thumb mode and to restore it back on leave).
677 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_store,
678 AO_test_and_set, AO_fetch_and_add, AO_fetch_and_add1,
679 AO_fetch_and_sub1, AO_compare_and_swap, AO_test_and_set_full):
680 Enable compilation in the Thumb mode (use AO_THUMB_GO_ARM,
681 AO_THUMB_RESTORE_MODE and AO_THUMB_SWITCH_CLOBBERS macros).
682 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
683 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
684 AO_compare_and_swap, AO_compare_double_and_swap_double): Add
685 "memory" to the list of clobbered registers.
687 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
689 * src/atomic_ops/sysdeps/gcc/arm.h: Reformat code.
690 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
691 AO_test_and_set_full): Add assembler comment containing the
694 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
696 * tests/test_malloc.c (run_one_test): Test AO_malloc() result
697 (if out of memory then print the message and abort).
698 * tests/test_stack.c (add_elements): Ditto.
700 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
702 * src/atomic_ops/generalize.h (AO_HAVE_or_full): Add missing
704 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_HAVE_nop_write):
706 * src/atomic_ops/sysdeps/read_ordered.h (AO_HAVE_nop_read): Ditto.
707 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_store_release):
710 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
712 * src/atomic_ops/generalize-small.template
713 (AO_HAVE_XSIZE_fetch_and_add_full): Add missing definition.
714 * src/atomic_ops/generalize-small.template: Reformat code.
715 * src/atomic_ops/generalize-small.h: Regenerate.
717 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
719 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Remove
720 blank line between AO_func and AO_HAVE_func definitions.
721 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
722 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
723 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
724 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
725 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
726 * src/atomic_ops/sysdeps/ordered.h: Ditto.
727 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
728 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
729 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
730 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
731 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
732 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
733 * src/atomic_ops/sysdeps/gcc/cris.h: Ditto.
734 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
735 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
736 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
737 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
738 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
739 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
740 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
741 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
742 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
743 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
744 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
745 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
746 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
747 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
748 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
749 * src/atomic_ops/sysdeps/sunc/sparc.h: Ditto.
750 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
751 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
752 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Reformat
754 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
755 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
756 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
757 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
758 * src/atomic_ops/sysdeps/ordered.h: Ditto.
759 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
760 * src/atomic_ops/sysdeps/test_and_set_t_is_char.h: Remove file
762 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Don't
764 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire,
765 AO_test_and_set, AO_compare_and_swap): Merge adjacent definitions.
766 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_store_release):
768 * src/atomic_ops/sysdeps/sunc/sparc.h: Expand all tabs to spaces;
769 remove trailing spaces at EOLn.
771 2011-06-02 Ivan Maidanski <ivmai@mail.ru>
773 * tests/test_malloc.c (main): Remove unused "exper_n" local
775 * tests/test_stack.c (run_one_test): Remove unused "aux" local
778 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
780 * src/atomic_ops/sysdeps/gcc/arm.h
781 (AO_compare_double_and_swap_double,
782 AO_HAVE_compare_double_and_swap_double): Define only starting from
784 * src/atomic_ops/sysdeps/gcc/arm.h
785 (AO_compare_double_and_swap_double): Fix function name in
786 assembler code; replace while (1) loop with "do-while".
788 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
790 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full):
791 Specify "%b0" (instead of "%0") in "xchg" instruction (to
792 workaround a bug in Sun C 5.11).
793 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
796 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
798 * src/atomic_ops_malloc.c (AO_malloc_enable_mmap): Workaround for
799 Sun C compiler (call "release" variant of AO_store).
801 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
803 * configure.ac (_PTHREADS): New template (used for NetBSD).
804 * configure.ac (THREADDLLIBS): New macro.
805 * tests/Makefile.am (test_atomic_LDADD, test_stack_LDADD,
806 test_atomic_pthreads_LDADD, test_malloc_LDADD): Use THREADDLLIBS
807 instead of "-lpthread".
808 * configure: Regenerate.
809 * Makefile.in: Ditto.
810 * doc/Makefile.in: Ditto.
811 * src/Makefile.in: Ditto.
812 * src/atomic_ops/Makefile.in: Ditto.
813 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
814 * src/config.h.in: Ditto.
815 * tests/Makefile.in: Ditto.
817 2011-05-30 Ivan Maidanski <ivmai@mail.ru>
819 * configure.ac (PIC): Add workaround for GCC v3.4.6 which does not
820 define the corresponding macro.
821 * configure.ac: Don't check for GCC twice.
822 * configure: Regenerate.
823 * tests/test_malloc.c (DEFAULT_NTHREADS): New macro.
824 * tests/test_malloc.c (run_one_test): Refine printed message (in
826 * tests/test_malloc.c (main): Use DEFAULT_NTHREADS.
827 * tests/test_stack.c (main): Cast AO_stack_pop() returned pointer.
828 * src/atomic_ops_malloc.c (USE_MMAP_ANON, GC_MMAP_FLAGS,
829 OPT_MAP_ANON): New macro.
830 * src/atomic_ops_malloc.c (get_mmaped): Pass -1 (instead of 0) as
831 file descriptor to mmap() if MAP_ANONYMOUS (same as for MAP_ANON).
832 * src/atomic_ops_malloc.c (get_mmaped): Use USE_MMAP_ANON,
833 GC_MMAP_FLAGS and OPT_MAP_ANON macros; reformat code; check open()
836 2011-05-11 Ivan Maidanski <ivmai@mail.ru>
838 * tests/test_malloc.c: Expand all tabs to spaces; remove trailing
840 * tests/test_malloc.c (LENGTH, LARGE): Rename to LIST_LENGTH and
841 LARGE_OBJ_SIZE, respectively.
842 * tests/test_malloc.c (MAX_NTHREADS, N_REVERSALS, LIST_LENGTH,
843 LARGE_OBJ_SIZE): Do not define unless undefined.
844 * tests/test_malloc.c (run_one_test): Recognize DEBUG_RUN_ONE_TEST
847 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
849 * tests/Makefile.am (EXTRA_DIST): Add list_atomic.c; update
851 * tests/Makefile.am (CLEANFILES): Remove test_atomic_include.h,
853 * tests/Makefile.am: Remove trailing spaces at EOLn.
854 * tests/Makefile.in: Regenerate.
856 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
858 * tests/test_stack.c (MAX_NTHREADS, N_EXPERIMENTS): Do not define
860 * tests/test_stack.c: Expand all tabs to spaces.
861 * tests/test_atomic_include.h: Ditto.
862 * tests/test_stack.c (main): Free pop'ed elements.
863 * tests/test_atomic_include.h (test_atomic, test_atomic_release,
864 test_atomic_acquire, test_atomic_read, test_atomic_write,
865 test_atomic_full, test_atomic_release_write,
866 test_atomic_acquire_read): Remove prototype.
868 2011-04-22 Ivan Maidanski <ivmai@mail.ru>
870 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_MASK): Add "volatile" for
871 asm; remove redundant trailing ';'.
873 2011-04-11 Ivan Maidanski <ivmai@mail.ru> (really Jim Meyering)
875 * doc/README.txt: Remove doubled words in comments.
877 2011-03-18 Ivan Maidanski <ivmai@mail.ru>
879 * src/atomic_ops/sysdeps/gcc/arm.h: Test for all the known pre-v6
880 ARM chips instead of all the currently existing v6+ ones.
882 2011-03-13 Ivan Maidanski <ivmai@mail.ru>
884 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo in a comment;
885 expand all tabs to spaces.
886 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
887 Recognize AO_XCHGB_RET_WORD new macro (to workaround a bug).
888 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
891 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
893 * src/atomic_ops.c: Include sys/time.h (to get timespec) for NaCl.
894 * src/atomic_ops_malloc.c (msb): Do the shift by 32 only once (in
895 a conditional expression) to prevent a compiler warning.
896 * src/atomic_ops_malloc.c: Expand all tabs to spaces; remove
897 trailing spaces at EOLn.
899 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
901 * src/atomic_ops.c: Explicitly define AO_USE_NO_SIGNALS and
902 AO_USE_NANOSLEEP for NaCl.
904 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
906 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
907 automake-1.11.1 and libtool-2.4).
910 2011-02-09 Ivan Maidanski <ivmai@mail.ru>
912 * src/atomic_ops.c (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): New
914 * src/atomic_ops.c (AO_USE_WIN32_PTHREADS): Imply
916 * src/atomic_ops.c: Don't include signal.h if AO_USE_NO_SIGNALS.
917 * src/atomic_ops.c: Include time.h if AO_USE_NANOSLEEP.
918 * src/atomic_ops.c (AO_locks, AO_pause): Reformat the code.
919 * src/atomic_ops.c (AO_pause): Use nanosleep() if
921 * src/atomic_ops.c (all_sigs, initialized,
922 AO_compare_and_swap_emulation,
923 AO_compare_double_and_swap_double_emulation): Use
924 AO_USE_NO_SIGNALS instead of AO_USE_WIN32_PTHREADS.
926 2011-01-07 Ivan Maidanski <ivmai@mail.ru>
928 * src/.cvsignore: Add more auto-generated files.
929 * tests/.cvsignore: Ditto.
930 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full, AO_store,
931 AO_compare_double_and_swap_double): Reformat code.
932 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
933 AO_compare_double_and_swap_double): Ditto.
934 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
935 Produce "it eq" instruction only for Thumb mode.
936 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
938 2010-11-23 Ivan Maidanski <ivmai@mail.ru> (really Michael Hope)
940 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
941 Insert "it eq" just before "strexeq" (required for Thumb-2 mode,
942 ignored in ARM mode).
943 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
945 2010-09-15 Ivan Maidanski <ivmai@mail.ru> (with input from Gregory Farnum)
947 * src/atomic_ops.h: Include armcc/arm_v6.h if __ARMCC__.
948 * src/atomic_ops.h: Include ibmc/powerpc.h if __IBMC__.
949 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if msftc/arm.h is
951 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if AO_CAN_EMUL_CAS
952 is defined but emul_cas.h has not been included.
953 * src/atomic_ops/sysdeps/gcc/arm.h: Fix a typo.
955 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
957 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
958 automake-1.11.1 and libtool-2.2.8).
961 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
963 * src/atomic_ops/sysdeps/gcc/arm.h: Replace C++ style comment
966 2010-05-30 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
968 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Use
969 "register long" (instead of "int") for "ret" variable.
970 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Replace
971 with AO_test_and_set_full (same for AO_HAVE_test_and_set).
972 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_compare_and_swap_full):
973 New function implemented.
975 2010-05-22 Ivan Maidanski <ivmai@mail.ru>
977 * src/atomic_ops/sysdeps/Makefile.am (nobase_sysdep_HEADERS):
979 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
981 2010-05-21 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
983 * src/atomic_ops.h: Recognize __avr32__ (include gcc/avr32.h).
984 * src/atomic_ops/sysdeps/gcc/avr32.h: New file.
986 2010-04-29 Ivan Maidanski <ivmai@mail.ru>
988 * doc/README_malloc.txt: Fix a typo.
989 * doc/README_stack.txt: Ditto.
991 2010-02-25 Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
993 * .cvsignore: New file.
994 * doc/.cvsignore: Ditto.
995 * src/.cvsignore: Ditto.
996 * src/atomic_ops/.cvsignore: Ditto.
997 * src/atomic_ops/sysdeps/.cvsignore: Ditto.
998 * tests/.cvsignore: Ditto.
1000 2010-02-19 Ivan Maidanski <ivmai@mail.ru> (mostly really Patrick Marlier)
1002 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full):
1003 Use __sync_bool_compare_and_swap() if AO_USE_SYNC_CAS_BUILTIN.
1004 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1006 * src/atomic_ops.h (AO_USE_SYNC_CAS_BUILTIN): New macro defined
1007 if GCC v4.2+ or Intel compiler v11.1+ (only for amd64).
1008 * src/atomic_ops.h: Include GCC-specific sysdeps files for Intel
1009 compiler in GCC compatible mode (only for x86 and amd64).
1011 2010-02-18 Ivan Maidanski <ivmai@mail.ru>
1013 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Don't check
1014 for AO_USE_PENTIUM4_INSTRS (since "mfence" (SSE2) is supported on
1015 all x86_64/amd64 chips); remove the comment.
1016 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1017 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Define only
1018 if AO_ASM_X64_AVAILABLE.
1019 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1020 Use built-in __sync_bool_compare_and_swap() if GCC v4.2+.
1022 2010-02-17 Ivan Maidanski <ivmai@mail.ru> (really Patrick Marlier)
1024 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full,
1025 AO_compare_double_and_swap_double_full): Use EAX for the result
1026 since cmpxchg clobbers it.
1027 * src/atomic_ops/sysdeps/sunc/x86.h (AO_compare_and_swap_full,
1028 AO_compare_double_and_swap_double_full): Ditto.
1029 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full,
1030 AO_compare_double_and_swap_double_full): Ditto.
1031 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_compare_and_swap_full,
1032 AO_compare_double_and_swap_double_full): Ditto.
1034 2010-02-04 Ivan Maidanski <ivmai@mail.ru>
1036 * doc/Makefile.in: Regenerate.
1038 2010-02-04 Ivan Maidanski <ivmai@mail.ru> (really Ian Wienand)
1040 * doc/Makefile.am: Remove duplicate file in the list.
1042 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1044 * ChangeLog: Fix some typos.
1046 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1048 * src/atomic_ops_stack.c (AO_stack_push_explicit_aux_release):
1049 Define "i" variable only if used (to suppress a compiler warning).
1051 2010-02-02 Ivan Maidanski <ivmai@mail.ru>
1053 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full): Fix
1054 "xchg" data size (remove "l" suffix).
1055 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
1057 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full): Use
1059 * src/atomic_ops/sysdeps/sunc/x86.h
1060 (AO_compare_double_and_swap_double_full,
1061 AO_HAVE_compare_double_and_swap_double_full): Comment out (since
1062 not tested, might be wrong, and tickles a bug in some Sun CC
1063 versions; besides, __PIC__ macro is never predefined by Sun CC).
1065 2010-01-29 Ivan Maidanski <ivmai@mail.ru>
1067 * INSTALL: Regenerate (by autoreconf -vif using libtool-2.2.6b,
1068 automake-1.11.1, autoconf-2.65).
1069 * Makefile.in: Ditto.
1070 * aclocal.m4: Ditto.
1072 * config.guess: Ditto.
1073 * config.sub: Ditto.
1076 * install-sh: Ditto.
1078 * mkinstalldirs: Ditto.
1079 * doc/Makefile.in: Ditto.
1080 * src/Makefile.in: Ditto.
1081 * src/atomic_ops/Makefile.in: Ditto.
1082 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1083 * src/config.h.in: Ditto.
1084 * tests/Makefile.in: Ditto.
1086 2009-12-19 Ivan Maidanski <ivmai@mail.ru>
1088 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_lwsync): Redirect to
1089 AO_sync() if __NO_LWSYNC__ (same as for gcc/powerpc.h).
1091 2009-12-17 Ivan Maidanski <ivmai@mail.ru> (really Emmanuel Stapf)
1093 * src/atomic_ops.h: Recognize _M_X64 (as an alias for _AMD64_).
1095 2009-12-04 Ivan Maidanski <ivmai@mail.ru>
1097 * configure.ac, README: Change to version 7.2alpha5.
1098 * configure: Regenerate.
1102 2009-12-02 Ivan Maidanski <ivmai@mail.ru>
1104 * configure.ac, README: Change to version 7.2alpha4.
1105 * configure: Regenerate.
1107 2009-12-01 Ivan Maidanski <ivmai@mail.ru>
1109 * configure.ac, README: Change to version 1.3alpha1.
1110 * configure: Regenerate.
1112 2009-11-21 Ivan Maidanski <ivmai@mail.ru> (really Daniel R. Grayson)
1114 * configure.ac (AC_CONFIG_COMMANDS): Quote PICFLAG, CC, DEFS
1116 * configure: Regenerate.
1118 2009-10-06 Ivan Maidanski <ivmai@mail.ru>
1120 * src/atomic_ops/sysdeps/gcc/sh.h: Remove commented out AO_TS_SET
1123 2009-10-05 Ivan Maidanski <ivmai@mail.ru>
1125 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1127 2009-10-05 Ivan Maidanski <ivmai@mail.ru> (really Takashi YOSHII)
1129 * src/atomic_ops/sysdeps/gcc/sh.h: New file.
1130 * src/atomic_ops.h: Include gcc/sh.h if __arm__.
1131 * src/atomic_ops/sysdeps/Makefile.am: Add gcc/sh.h entry.
1133 2009-10-02 Ivan Maidanski <ivmai@mail.ru>
1135 * src/atomic_ops/sysdeps/Makefile.am: Add armcc/arm_v6.h,
1136 msftc/arm.h, msftc/common32_defs.h, sunc/x86.h sunc/x86_64.h
1137 entries; order all entries alphabetically.
1138 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1140 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1142 * aclocal.m4: Regenerate (by autoreconf -vif using libtool-2.2,
1143 automake-1.10.2, autoconf-2.64).
1145 * Makefile.in: Ditto.
1146 * aclocal.m4: Ditto.
1147 * config.guess: Ditto.
1148 * config.sub: Ditto.
1151 * install-sh: Ditto.
1153 * mkinstalldirs: Ditto.
1154 * doc/Makefile.in: Ditto.
1155 * src/config.h.in: Ditto.
1156 * src/Makefile.in: Ditto.
1157 * src/atomic_ops/Makefile.in: Ditto.
1158 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1159 * tests/Makefile.in: Ditto.
1161 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1163 * src/atomic_ops/sysdeps/gcc/x86.h: Remove spaces preceding '#'
1164 for the preprocessor directives.
1165 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1167 2009-09-30 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1169 * README: Move notes from the hand-edited part of INSTALL which
1170 was overwritten by Automake recently.
1172 2009-09-26 Ivan Maidanski <ivmai@mail.ru>
1174 * aclocal.m4: Regenerate (by autoreconf -vif).
1175 * config.guess: Ditto.
1176 * config.sub: Ditto.
1179 * Makefile.in: Ditto.
1180 * doc/Makefile.in: Ditto.
1181 * src/config.h.in: Ditto.
1182 * src/Makefile.in: Ditto.
1183 * src/atomic_ops/Makefile.in: Ditto.
1184 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1185 * tests/Makefile.in: Ditto.
1187 2009-09-25 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1189 * configure.ac: Replace AC_PROG_CC with AM_PROG_CC_C_O.
1191 2009-09-16 Ivan Maidanski <ivmai@mail.ru>
1193 * ChangeLog: Remove trailing spaces at EOLn.
1194 * doc/README.txt: Expand all tabs to spaces; remove trailing
1195 spaces at EOLn; remove multiple trailing blank lines.
1196 * src/atomic_ops.c: Ditto.
1197 * src/atomic_ops.h: Ditto.
1198 * src/atomic_ops/generalize-small.h: Ditto.
1199 * src/atomic_ops/generalize.h: Ditto.
1200 * src/atomic_ops/sysdeps/acquire_release_volatile.h: Ditto.
1201 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Ditto.
1202 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Ditto.
1203 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Ditto.
1204 * src/atomic_ops/sysdeps/ao_t_is_int.h: Ditto.
1205 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Ditto.
1206 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
1207 * src/atomic_ops/sysdeps/char_acquire_release_volatile.h: Ditto.
1208 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
1209 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
1210 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
1211 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
1212 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
1213 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
1214 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
1215 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
1216 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
1217 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
1218 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
1219 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
1220 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
1221 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
1222 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
1223 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
1224 * src/atomic_ops/sysdeps/icc/ia64.h: Ditto.
1225 * src/atomic_ops/sysdeps/int_acquire_release_volatile.h: Ditto.
1226 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
1227 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
1228 * src/atomic_ops/sysdeps/msftc/arm.h: Ditto.
1229 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
1230 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
1231 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1232 * src/atomic_ops/sysdeps/ordered.h: Ditto.
1233 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
1234 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
1235 * src/atomic_ops/sysdeps/short_acquire_release_volatile.h: Ditto.
1236 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
1237 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
1238 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Ditto.
1239 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1240 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1241 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h: Ditto.
1242 * src/atomic_ops_stack.c: Ditto.
1243 * src/atomic_ops_stack.h: Ditto.
1244 * src/atomic_ops/sysdeps/gcc/arm.h: Replace non-ASCII quotes in a
1246 * src/atomic_ops/sysdeps/gcc/mips.h: Use Unix-style EOLn.
1248 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1251 * src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
1252 (regarding memory barrier).
1253 * src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
1254 AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
1255 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
1256 AO_test_and_set): Replace FIXME with the comment saying it is
1257 emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
1258 * src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
1259 using InterlockedCompareExchange() (assuming the latter has a full
1261 * src/atomic_ops/sysdeps/msftc/arm.h: Include
1262 all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
1263 of pre-ARMv6; add the comment.
1265 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1268 * src/atomic_ops/sysdeps/armcc/arm_v6.h
1269 (AO_compare_double_and_swap_double): Replace false/true with 0/1.
1270 * src/atomic_ops/sysdeps/gcc/arm.h
1271 (AO_compare_double_and_swap_double): Ditto.
1272 * src/atomic_ops/sysdeps/gcc/arm.h: Recognize more ARMv6+
1273 predefined macros (6J, 6ZK, 7A, 7M, 7R).
1274 * src/atomic_ops/sysdeps/gcc/arm.h
1275 (AO_compare_double_and_swap_double): Add "cc" clobber to asm.
1276 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_load_acquire):
1277 Correct the name (convert from the lower case).
1278 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_load_acquire):
1280 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_test_and_set,
1281 AO_compare_and_swap): Comment out unimplemented code (and the
1282 corresponding macros); add FIXME.
1283 * src/atomic_ops.c: Recognize AO_USE_WIN32_PTHREADS overriding
1284 _MSC_VER and __MINGW32__ predefined macros (useful for WinCE with
1285 pthreads-w32 library); don't include signal.h, sys/time.h,
1286 sys/select.h in this case; include windows.h instead.
1287 * src/atomic_ops.c (AO_pause): Use Sleep() in case of
1288 AO_USE_WIN32_PTHREADS (instead of select()).
1289 * src/atomic_ops.c (all_sigs, initialized): Don't define in case
1290 of AO_USE_WIN32_PTHREADS.
1291 * src/atomic_ops.c (AO_compare_and_swap_emulation,
1292 AO_compare_double_and_swap_double_emulation): Don't deal with
1293 signals in case of AO_USE_WIN32_PTHREADS.
1295 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1298 * src/atomic_ops/sysdeps/msftc/arm.h: New file (initial support
1300 * src/atomic_ops/sysdeps/msftc/common32_defs.h: New file.
1301 * src/atomic_ops/sysdeps/msftc/arm.h (AO_ASSUME_ARM_ARCH6): New
1303 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1304 (AO_USE_INTERLOCKED_INTRINSICS): Ditto.
1305 * src/atomic_ops/sysdeps/msftc/x86.h: Move "Interlocked"
1306 declarations to common32_defs.h.
1307 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1308 (AO_INTERLOCKED_VOLATILE): New macro defined (used by
1309 Interlocked-based primitives) for compatibility with older VC++.
1310 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Don't include
1311 missing <intrin.h> if WinCE target.
1312 * src/atomic_ops/sysdeps/msftc/x86.h: Include common32_defs.h
1313 (define AO_USE_INTERLOCKED_INTRINSICS unconditionally).
1314 * src/atomic_ops/sysdeps/msftc/x86.h (AO_fetch_and_add_full,
1315 AO_fetch_and_add1_full, AO_fetch_and_sub1_full,
1316 AO_compare_and_swap_full): Move arch-independent primitives to
1318 * src/atomic_ops/sysdeps/msftc/x86.h: Remove comment about i486 or
1319 better CPU (since Interlocked Add and Xchg primitives are available
1321 * src/atomic_ops.h: Include msftc/x86.h even if _M_IX86 is less than
1323 * src/atomic_ops.h: Include msftc/x86.h if "x86" defined (for WinCE
1325 * src/atomic_ops.h: Include msftc/arm.h if ARM target (for WinCE).
1327 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1330 * src/atomic_ops/sysdeps/msftc/x86.h: Fix comments (prefix
1331 ASSUME_WINDOWS98 with "AO_").
1332 * src/atomic_ops/sysdeps/msftc/x86.h: Prefix ASSUME_VISTA macro with
1334 * src/atomic_ops/sysdeps/msftc/x86.h (AO_nop_full): Replace
1335 K&R-style function definition with ANSI C one.
1336 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full):
1337 Replace AO_TS_SET with its value 0xff (some compilers does not like
1338 C enum consts inside inline assembler).
1339 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full): Add
1340 comment about "missing return value" warning.
1341 * src/atomic_ops/sysdeps/msftc/x86.h
1342 (AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE): New macro.
1343 * src/atomic_ops/sysdeps/msftc/x86.h (AO_compare_and_swap_full): Use
1344 _InterlockedCompareExchange() with args and result of PVOID type
1345 if AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE is defined (mostly for
1346 DigitalMars compiler support).
1347 * src/atomic_ops/sysdeps/msftc/x86.h
1348 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1349 variables ("val1" is the lowest part of AO_double_t).
1350 * src/atomic_ops/sysdeps/msftc/x86.h
1351 (AO_compare_double_and_swap_double_full): Rename to
1352 AO_double_compare_and_swap_full (as it has 3 args).
1353 * src/atomic_ops/sysdeps/msftc/x86.h: Replace C++ style comment
1356 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1359 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove comments about i486
1360 and 32-bit WinChips.
1361 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1362 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Replace
1363 K&R-style function definition with ANSI C one.
1364 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1365 * src/atomic_ops/sysdeps/gcc/x86_64.h
1366 (AO_compare_double_and_swap_double_full): Fix comment.
1367 * src/atomic_ops/sysdeps/gcc/x86_64.h
1368 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1369 variables ("val1" is the lowest part of AO_double_t).
1370 * src/atomic_ops/sysdeps/msftc/x86_64.h
1371 (AO_compare_double_and_swap_double_full): Ditto.
1372 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove comment about
1374 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_ASM_X64_AVAILABLE): New
1376 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1377 "test_and_set_t_is_char.h" if AO_ASM_X64_AVAILABLE (same as in
1378 x86_64.h for gcc); remove FIXME (for re-implement test-and-set).
1379 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1380 "standard_ao_double_t.h" (same as in x86_64.h for gcc).
1381 * src/atomic_ops/sysdeps/msftc/x86_64.h: Add comment for include
1382 <intrin.h> assuming at least VC++ v8.
1383 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove _Interlocked
1384 prototypes (since they are always declared in intrin.h).
1385 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Move its
1386 definition below CAS primitive (to textually group all asm-based
1387 primitives together).
1388 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_test_and_set_full):
1389 Implement for AO_ASM_X64_AVAILABLE case.
1390 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove AO_CASDOUBLE_MISSING
1391 macro (replaced with AO_ASM_X64_AVAILABLE).
1392 * src/atomic_ops/sysdeps/msftc/x86_64.h
1393 (AO_compare_double_and_swap_double_full): Add intrinsic-based
1394 implementation for VC++ v9+.
1395 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Include
1396 <xmmintrin.h> (and use "__m128" type) if _WIN64.
1397 * src/atomic_ops/sysdeps/standard_ao_double_t.h
1398 (AO_HAVE_DOUBLE_PTR_STORAGE): Define it always (as
1399 "double_ptr_storage" is defined for all cases).
1401 2009-09-09 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1403 * src/atomic_ops/sysdeps/gcc/sparc.h (NO_SPARC_V9):
1404 Renamed to AO_NO_SPARC_V9.
1406 2009-09-01 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1408 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
1409 AO_TS_VAL_t for "oldval" (for 64-bit support).
1410 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
1411 New function implemented.
1413 2009-08-12 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1414 (diff107_cvs, resembling diff78 and diff88_cvs)
1416 * src/atomic_ops/sysdeps/sunc/x86.h: New file.
1417 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1418 * src/atomic_ops.h (AO_INLINE): Support inlining for DigitalMars,
1420 * src/atomic_ops.h (AO_compiler_barrier): Use intrinsic-based
1421 implementation for VC++ v8+ (include <intrin.h> before it unless
1422 WinCE target); use asm-based barrier implementation for Borland,
1423 DigitalMars and Watcom.
1424 * src/atomic_ops.h: Fix comment (for x86_64).
1425 * src/atomic_ops.h: Include specialized x86.h and x86_64.h arch
1426 headers for Sun C (if not AO_USE_PTHREAD_DEFS).
1427 * src/atomic_ops.h: Include VC-specific arch headers for Borland,
1428 DigitalMars and Watcom (Win32 target only).
1430 2009-05-27 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1431 (diff87_cvs, resembling diff29, diff68, diff78 partly)
1433 * doc/README.txt: Remove outdated info about Windows support.
1434 * src/atomic_ops/generalize.h (AO_nop_full): Replace
1435 K&R-style function definition with ANSI C one.
1436 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Ditto.
1437 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_nop_full, AO_nop_write):
1439 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Ditto.
1440 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_nop_full): Ditto.
1441 * src/atomic_ops/sysdeps/gcc/mips.h (AO_nop_full): Ditto.
1442 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_nop_full, AO_lwsync): Ditto.
1443 * src/atomic_ops/sysdeps/gcc/x86.h (AO_nop_full): Ditto.
1444 * src/atomic_ops/sysdeps/generic_pthread.h (AO_nop_full): Ditto.
1445 * src/atomic_ops/sysdeps/hpc/ia64.h (AO_nop_full): Ditto.
1446 * src/atomic_ops/sysdeps/icc/ia64.h (AO_nop_full): Ditto.
1447 * src/atomic_ops/sysdeps/ordered.h (AO_nop_full): Ditto.
1448 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_nop_write): Ditto.
1449 * src/atomic_ops/sysdeps/read_ordered.h (AO_nop_read): Ditto.
1450 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h (AO_TS_val): Fix
1453 2009-02-24 Hans Boehm <Hans.Boehm@hp.com> (Really primarily Earl Chew)
1455 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add index,
1456 update modifiers to asms, refine clobbers to "cr0", use
1457 cr0 instead of cr7, add explicit AO_fetch_and_add,
1458 add UNTESTED 64 bit support.
1460 2008-11-10 Hans Boehm <Hans.Boehm@hp.com> (Really Joerg Wagner)
1462 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Compute
1463 AO_compare_and_swap value differently, add
1464 AO_compare_double_and_swap_double, some indentation fixes.
1465 * src/atomic_ops/sysdeps/gcc/arm.h: Make gcc asm code more
1466 robust and minimize clobbers, Add AO_compare_double_and_swap_double.
1468 2008-11-06 Hans Boehm <Hans.Boehm@hp.com>
1470 * INSTALL: Add some platform-specific documentation.
1471 * src/Makefile.msft: Fix copyright notice.
1473 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1475 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
1476 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
1477 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
1478 * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
1479 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
1480 * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
1481 * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
1482 * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
1483 * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
1484 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
1485 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
1486 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
1487 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix comments.
1488 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
1489 * src/atomic_ops.c: Fix comments.
1490 * src/atomic_ops.h: Fix comments.
1491 * src/atomic_ops_stack.c: Fix comments.
1492 * src/atomic_ops_stack.h: Fix comments.
1494 2008-10-20 Hans Boehm <Hans.Boehm@hp.com> (really Andrew Agno)
1496 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
1499 2008-08-21 Hans Boehm <Hans.Boehm@hp.com>
1501 * config.guess, config.sub, configure: Regenerate/replace.
1502 Use autoconf 2.61, automake 1.9.6.
1504 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Thiemo Seufer)
1506 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz
1509 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Sebastian Siewior)
1511 * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__.
1513 2008-07-24 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1515 * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h:
1516 Add parentheses around addr arg for various functions.
1518 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1520 * src/atomic_ops/sysdeps/gcc/powerpc.h:
1521 Add const to first parameter of load calls (forgot one).
1523 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1525 * doc/README.txt, src/atomic_ops/generalize.h,
1526 src/atomic_ops/generalize-small.template,
1527 src/atomic_ops/generalize-small.h,
1528 src/atomic_ops/sysdeps/acquire_release_volatile.h,
1529 src/atomic_ops/sysdeps/char_acquire_release_volatile.h,
1530 src/atomic_ops/sysdeps/int_acquire_release_volatile.h,
1531 src/atomic_ops/sysdeps/short_acquire_release_volatile.h,
1532 src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1533 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1534 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
1535 src/atomic_ops/sysdeps/ao_t_is_int.h,
1536 src/atomic_ops/sysdeps/atomic_load_store.h,
1537 src/atomic_ops/sysdeps/char_atomic_load_store.h,
1538 src/atomic_ops/sysdeps/int_atomic_load_store.h,
1539 src/atomic_ops/sysdeps/short_atomic_load_store.h,
1540 src/atomic_ops/sysdeps/generic_pthread.h,
1541 src/atomic_ops/sysdeps/read_ordered.h,
1542 src/atomic_ops/sysdeps/sysdeps/armcc/arm_v6.h,
1543 src/atomic_ops/sysdeps/gcc/arm.h,
1544 src/atomic_ops/sysdeps/icc/ia64.h,
1545 src/atomic_ops/sysdeps/ibmc/powerpc.h:
1546 Add const to first parameter of load calls.
1548 2008-07-10 Hans Boehm <Hans.Boehm@hp.com>
1550 * src/atomic_ops/sysdeps/gcc/m68k.h: Remove SMP-unsafe
1551 AO_or_full, and let it be autogenerated instead.
1553 2008-07-03 Hans Boehm <Hans.Boehm@hp.com> (Really Thiemo Seufer)
1555 * src/atomic_ops/sysdeps/gcc/mips.h: Really add mips support,
1556 fixing a merge accident.
1558 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1561 * doc/Makefile.in, src/Makefile.in, src/atomic_ops/Makefile.in:
1564 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1567 * src/atomic_ops.h, src/atomic_ops/sysdeps/Makefile.am,
1568 src/atomic_ops/sysdeps/gcc/mips.h: Add mips support.
1569 * src/atomic_ops/sysdeps/gcc/m68k.h: Make test_and_set work
1570 on char, align AO_t. Add cas, or.
1571 * src/atomic_ops/sysdeps/gcc/s390.h: Fix include paths.
1572 * src/atomic_ops/generalize.h: Fix AO_compare_and_swap_double_acquire.
1573 * Makefile.in, aclocal.m4, src/atomic_ops/sysdeps/Makefile.in,
1574 tests/Makefile.in: Regenerate.
1576 2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
1577 (Really Ian Wienand & Debian maintainers)
1579 * src/atomic_ops/sysdeps/gcc/x86.h
1580 (AO_compare_double_and_swap_double_full): Correctly account for
1583 2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
1585 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
1586 double_ptr_storage default to long long; define everywhere.
1588 2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1590 * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
1591 compare_double_and_swap_double.
1593 2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1595 * src/atomic_ops/generalize.h: Add test_and_set generalizations,
1596 Add AO_double_compare_and_swap generalizations.
1597 * src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
1598 * src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
1599 * src/atomic_ops/sysdeps/gcc/x86.h,
1600 src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
1601 compare_double_and_swap_double, commented out for msftc.
1602 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
1603 double_ptr_storage field.
1605 2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
1606 (Merge from separate atomic_ops tree)
1608 * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
1609 double-width cas, and fix its implementation.
1610 * doc/README.txt: Clarify use of _full. Add more warnings about
1613 2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
1615 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1616 %X1 modifier to support indexed addressing.
1618 2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
1620 * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
1623 2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
1625 * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
1628 2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
1630 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1633 2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
1635 * src/atomic_ops.h: include stddef.h
1637 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
1639 * src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
1640 * src/atomic_ops.h: Add test for msftc/x86_64.h.
1641 * src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
1642 * src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
1643 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1644 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1645 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1646 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
1647 Replace unsigned long cast with size_t.
1649 2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
1651 * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
1652 Add cast for return.
1654 2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
1656 * doc/README.txt: Update to reflect C++0x effort.
1658 2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
1660 * src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
1662 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
1665 2006-11-09 Earl Chew (Agilent)
1667 * msftc/x86.h: Follow Microsoft documentation and include
1672 2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
1674 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
1676 2006-03-28 Earl Chew (Agilent)
1678 * src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
1679 * src/atomic_ops/sysdeps/msftc/x86.h:
1680 Use new intrinsics available in MSVC 2003 and MSVC 2005.
1681 Use inline assembler to generate mfence and byte sized xchg
1682 Use correct prototype for InterlockedCompareExchange.
1683 * src/atomic_ops.h: Add test for __PPC__ .
1684 * tests/run_parallel.inc: Add simple VxWorks support.
1685 * tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
1686 to silence compiler warnings.
1688 2006-11-13 Hans Boehm <Hans.Boehm@hp.com>
1690 * src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
1691 * src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
1693 2005-11-04 Hans Boehm <Hans.Boehm@hp.com>
1695 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1696 all_acquire_release_volatile.h, instead of just the pointer-sized
1698 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1699 all_acquire_release_volatile.h and all_atomic_load_store.h,
1700 instead of just the pointer-sized versions.
1704 2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
1706 * src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
1707 * src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
1708 ordered_except_wr.h.
1709 * src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
1710 instead of duplicating it.
1711 * src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
1713 2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
1715 * src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
1716 definition with one that might actually work. (Thanks to Kazu
1717 Hirata and Paul Brook.)
1719 2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
1721 * src/atomic_ops/Makefile.am: Change function naming from "byte" to
1726 2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
1727 Fix various acquire_release_volatile.h files to reflect the fact
1728 that both icc and gcc seem to reorder ordinary memory accesses around
1729 volatile accesses early in the compilation. Modify the acquire
1730 release test to catch this problem (with high probability, and only on
1733 2005-03 Hans Boehm <Hans.Boehm@hp.com>
1734 Fixes for recently introduced bugs. Update x86 and x86-64 assembly
1735 syntax to deal with complaints by some recent gcc versions.
1737 2005-02 Hans Boehm <Hans.Boehm@hp.com>
1738 Added libatomic_ops_gpl library with support for mostly
1739 lock-free stack and malloc().
1741 2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
1742 Hans Boehm <Hans.Boehm@hp.com>
1743 Use autoconf, automake, starting with code from Debian package.
1746 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1747 * test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
1748 Change most platforms to use byte-wide test-and-set locations.
1750 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1751 * ao_t_is_int.h: Add to trivially support int-wide operations
1752 on platforms with int-sized pointers.
1754 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1755 * gcc/powerpc.h: First serious attempt to support PowerPC (with
1756 help from Maged Michael and others).
1758 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1759 * sunc/sparc.[hS]: Added minimal support for the Sun SPARC compiler.
1760 * atomic_ops_sysdeps.S: Add support for platforms that require
1761 out-of-line assembly code.
1763 2004-10 Hans Boehm <Hans.Boehm@hp.com>
1764 More work on char, short, int sized data. Add both
1765 compare_double_and_swap_double and compare_and_swap_double.
1766 Typically each platform will provide at most one of these.
1768 2004-07-02 Ranko Zivojnovic
1769 Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
1771 2004-06 Hans Boehm <Hans.Boehm@hp.com>
1772 Start to add atomic_ops primitives for different sized data.
1774 2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
1776 * atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
1777 Fix support for ecc on IA64. Remove compiler_barrier workaround
1778 for gcc 3.4 and later.
1780 2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
1782 * atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
1783 atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
1784 Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
1785 for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
1786 compiler on PA_RISC and IA64.
1788 2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
1790 * many: Install under "atomic_ops" instead of "ao".
1791 Change atomic_ops include file structure. Auxiliary include
1792 files are all under include/atomic_ops.
1793 Fix (hopefully) "make dist" in atomic_ops distribution.
1794 Renamed various types to end in _t, though the old versions
1795 are still defined for backward compatibility.
1797 2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
1799 * ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
1800 AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
1801 helper macros. AO_test_and_set_full uses helper macros.
1804 Started sometime after version 0.4 release. Currently the format is
1805 informal. Eventually should become more GNU-like.