1 2017-04-07 Fabrizio Fabbri <ffabbri4@bloomberg.net>
3 * src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE]
4 (AO_stack_pop_explicit_aux_acquire): Replace AO_load to AO_load_acquire
5 when loaded value is compared to first; add comment.
7 2017-03-15 Ivan Maidanski <ivmai@mail.ru>
9 * src/atomic_ops_malloc.c [SIZE_MAX] (AO_SIZE_MAX): Cast
10 SIZE_MAX to size_t explicitly (to workaround incorrect definition
11 of SIZE_MAX - e.g. it is defined as ~0ULL in musl-tools which is not
12 correct for a 32-bit target).
14 2017-02-22 Ivan Maidanski <ivmai@mail.ru>
16 * src/atomic_ops.h [__cris__ || CRIS] (AO_CAN_EMUL_CAS): Define.
17 * src/atomic_ops/sysdeps/gcc/cris.h: Add TODO to implement CAS.
19 2017-02-20 Ivan Maidanski <ivmai@mail.ru>
21 * src/atomic_ops/sysdeps/gcc/arm.h
22 (AO_compare_and_swap): Fix typo ("succeeded") and add "then" in comment.
23 * src/atomic_ops/sysdeps/gcc/arm.h
24 (AO_compare_double_and_swap_double): Likewise.
26 2017-01-31 Ivan Maidanski <ivmai@mail.ru>
28 * src/atomic_ops/sysdeps/standard_ao_double_t.h [__i386__ && __GNUC__]
29 (double_ptr_storage): Add aligned(8) attribute (so that AO_double_t
30 global/static variables to have proper (double-word) alignment).
32 2017-01-26 Ivan Maidanski <ivmai@mail.ru>
34 * src/atomic_ops.h (AO_TS_INITIALIZER): Change type from AO_t to
35 AO_TS_t; add outermost parentheses.
37 2017-01-24 Ivan Maidanski <ivmai@mail.ru>
39 * doc/README.txt (AO_double_t): Add note about required alignment.
40 * src/atomic_ops/sysdeps/standard_ao_double_t.h (AO_double_t): Add
41 comment about alignment.
42 * src/atomic_ops_stack.h (AO_stack_t): Likewise.
43 * tests/test_atomic.template (test_atomicXX): Define w
44 local variable as static (as otherwise, e.g., it could have 4-byte
45 alignment on x86); add comment.
46 * tests/test_atomic_include.h: Regenerate.
48 2017-01-16 Ivan Maidanski <ivmai@mail.ru>
50 * src/atomic_ops/sysdeps/msftc/arm.h: Remove FIXME about memory barrier
51 of _InterlockedOps (they have the correct one according to the MSDN).
53 2012-10-08 Ivan Maidanski <ivmai@mail.ru>
55 * src/Makefile.msft (libatomic_ops_gpl.lib): Do not pass
56 "/MACHINE:i386" option to "lib" tool (to select the proper target
57 architecture automatically).
59 2011-08-09 Ivan Maidanski <ivmai@mail.ru>
61 * src/Makefile.msft: Replace -o option with /Fo.
62 * src/Makefile.msft (clean): New target.
64 2011-08-09 Ivan Maidanski <ivmai@mail.ru>
66 * src/Makefile.msft (all): Build "libatomic_ops_gpl.lib" instead of
68 * src/Makefile.msft (test_malloc): Wrap long lines.
70 2016-11-02 Ivan Maidanski <ivmai@mail.ru>
72 * doc/README.txt: Document AO_REQUIRE_CAS better (replace
73 "compare-and-swap" with "AO_compare_and_swap*").
75 2016-08-24 Ivan Maidanski <ivmai@mail.ru>
77 * tests/test_atomic.template (test_atomicXX): Replace assert()
78 calls with TA_assert().
79 * test_atomic_include.h: Regenerate.
81 2016-08-22 Ivan Maidanski <ivmai@mail.ru>
83 * src/atomic_ops_malloc.c: Include limits.h (unless SIZE_MAX already
85 * src/atomic_ops_malloc.c (AO_SIZE_MAX): New macro.
86 * src/atomic_ops_malloc.c (SIZET_SAT_ADD): New macro.
87 * src/atomic_ops_malloc.c (AO_malloc_large): Use SIZET_SAT_ADD to
88 avoid integer overflow when computing the memory size to map (i.e.,
89 malloc should handle arguments close to SIZE_MAX correctly).
91 2016-10-05 Ivan Maidanski <ivmai@mail.ru>
93 * src/atomic_ops.h [_HPUX_SOURCE && !__ia64] (AO_barrier_dummy):
94 Fix typo ("do not") in comment.
95 * src/atomic_ops/generalize.h [AO_HAVE_nop_acquire]: Fix typo
96 ("do not") in #error message.
97 * src/atomic_ops/generalize.h [AO_HAVE_nop_release]: Likewise.
98 * src/atomic_ops/sysdeps/armcc/arm_v6.h [__TARGET_ARCH_ARM < 6]:
100 * src/atomic_ops/sysdeps/armcc/arm_v6.h [__TARGET_ARCH_ARM < 6]: Add
102 * src/atomic_ops_stack.c [AO_HAVE_compare_and_swap_double]: Fix typo
103 ("does not") in #error message.
107 2016-05-23 Ivan Maidanski <ivmai@mail.ru>
109 * README: Bump version to 7.2g (rev. G).
111 2016-05-23 Hans Boehm <boehm@acm.org>
113 * README: Add top-level disclaimer that it is better to use
114 C11 or C++14 atomic primitives instead of this library for the
115 newly-developed code.
117 2014-02-21 Ivan Maidanski <ivmai@mail.ru>
119 * README: Update links to BDWGC/libatomic_ops site.
120 * doc/README_stack.txt: Likewise.
122 2016-03-24 Ivan Maidanski <ivmai@mail.ru>
124 * doc/README.txt (Future directions): Remove (obsolete information
125 about C++0x standard future).
127 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
129 * Makefile.in: Regenerate properly (remove ltmain.sh from DIST_COMMON).
131 2016-03-22 Ivan Maidanski <ivmai@mail.ru>
133 * Makefile.in: Regenerate (by autoreconf -vif using autoconf-2.69,
134 automake-1.14.1 and libtool-2.4.2).
135 * config.guess: Likewise.
136 * config.sub: Likewise.
138 2015-01-08 James Cowgill <james410@cowgill.org.uk>
140 * src/atomic_ops/sysdeps/gcc/mips.h: Remove inclusion of
141 acquire_release_volatile.h (the ISA manuals do not say anything about
142 volatile loads / stores having acquire / release semantics).
146 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
148 * README: Bump version to 7.2f (rev. F).
150 2014-05-02 Ivan Maidanski <ivmai@mail.ru>
152 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
153 automake-1.14.1 and libtool-2.4.2.418).
155 * Makefile.in: Likewise.
156 * aclocal.m4: Likewise.
157 * config.guess: Likewise.
158 * config.sub: Likewise.
159 * doc/Makefile.in: Likewise.
161 * src/Makefile.in: Likewise.
162 * src/atomic_ops/Makefile.in: Likewise.
163 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
164 * src/config.h.in: Likewise.
165 * test-driver: Likewise.
166 * tests/Makefile.in: Likewise.
168 2014-03-28 Jan-Erik Rediger <badboy@archlinux.us>
170 * doc/README.txt: Remove redundant "an" article (fix typo).
174 2013-11-10 Ivan Maidanski <ivmai@mail.ru>
176 * README: Bump version to 7.2e (rev. E).
178 2013-08-31 Ivan Maidanski <ivmai@mail.ru>
180 * configure: Regenerate (by autoreconf -vif using autoconf-2.69,
181 automake-1.13.4 and libtool-2.4.2).
183 * Makefile.in: Likewise.
184 * aclocal.m4: Likewise.
186 * config.guess: Likewise.
187 * config.sub: Likewise.
189 * doc/Makefile.in: Likewise.
190 * install-sh: Likewise.
192 * mkinstalldirs: Likewise.
193 * src/Makefile.in: Likewise.
194 * src/atomic_ops/Makefile.in: Likewise.
195 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
196 * tests/Makefile.in: Likewise.
197 * test-driver: New generated file.
199 2013-08-18 Ivan Maidanski <ivmai@mail.ru>
201 * aclocal.m4: Regenerate (by autoreconf -vif).
203 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
205 * src/atomic_ops/sysdeps/gcc/arm.h
206 (AO_compare_double_and_swap_double): Do not define for
207 pre-Clang3.3 (since the latter does not allocate register pairs for
208 LDREXD/STREXD instructions properly); add comment.
210 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
212 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_double_and_swap_double):
213 Swap assembly code operands ("new_val" and "addr") to prevent
214 Clang3.3 warning about operand truncation.
216 2013-08-17 Ivan Maidanski <ivmai@mail.ru>
218 * src/atomic_ops/sysdeps/gcc/arm.h
219 (AO_compare_double_and_swap_double): Specify that LDREXD and STREXD use
220 2 adjacent registers (thus preventing Clang3.3 from register allocation
221 failures leading to "registers may not be the same" or
222 "even register required" GAS errors).
224 2013-07-30 Ivan Maidanski <ivmai@mail.ru>
226 * src/atomic_ops/generalize.h: Fix a typo in comment
229 2013-04-03 Manuel Serrano <Manuel.Serrano@inria.fr>
231 * configure.ac (AM_CONFIG_HEADER): Replace obsolete macro with with
232 AC_CONFIG_HEADERS one.
234 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
236 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
237 Do not use AO_EXPECT_FALSE (since defined only in v7.3+).
238 * src/atomic_ops/generalize-small.h: Regenerate.
240 2013-03-29 Ivan Maidanski <ivmai@mail.ru>
242 * src/atomic_ops/sysdeps/sunc/x86.h (AO_fetch_and_add_full,
243 AO_char_fetch_and_add_full, AO_short_fetch_and_add_full, AO_or_full,
244 AO_test_and_set_full,
245 AO_compare_and_swap_full): Use "+m" asm constraint for *addr instead
246 of "=m" (because the value pointed by addr is read and written by the
249 2013-03-13 Ivan Maidanski <ivmai@mail.ru>
251 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Use "+m"
252 asm constraint for *addr instead of "=m" (because the value pointed by
253 addr is read and written by the code).
255 2013-03-12 Ivan Maidanski <ivmai@mail.ru>
257 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap): Use "+m"
258 asm constraint for *addr instead of "+R" (the letter is unsupported
259 by clang3.1 resulting in "invalid output constraint in asm" error).
261 2013-02-14 Ivan Maidanski <ivmai@mail.ru>
263 * src/atomic_ops/sysdeps/gcc/arm.h: Do not include read_ordered.h
264 (because load_acquire should contain a DMB instruction in a multi-core
265 case, new load_acquire/read primitives implementation is generalized
266 using nop_full/read which either contain a DMB instruction, or is just
267 a compiler barrier for uniprocessor).
268 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Likewise.
269 * src/atomic_ops/sysdeps/msftc/arm.h: Likewise.
271 2013-01-15 Ivan Maidanski <ivmai@mail.ru>
273 * doc/README.txt (_acquire_read): Add information about memory
274 barrier (similar as in atomic_ops.h).
275 * doc/README.txt (_release_read): Remove information about
276 non-existing barrier.
278 2013-01-14 Ivan Maidanski <ivmai@mail.ru>
280 * src/atomic_ops/sysdeps/ao_t_is_int.h: Fix a typo in comment.
282 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
284 * src/atomic_ops/sysdeps/ao_t_is_int.h
285 (AO_int_load_acquire, AO_int_fetch_and_add_full,
286 AO_int_fetch_and_add1_acquire, AO_int_fetch_and_add1_release,
287 AO_int_fetch_and_sub1_acquire, AO_int_fetch_and_sub1_release): Cast
288 result to unsigned int instead of signed int.
290 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
292 * src/atomic_ops/sysdeps/gcc/s390.h: Move include of
293 ordered_except_wr.h down to be after all_aligned_atomic_load_store.h
294 inclusion (since the latter defines AO_X_load/store primitives used by
297 2013-01-13 Ivan Maidanski <ivmai@mail.ru>
299 * src/atomic_ops/sysdeps/msftc/arm.h: Fix a typo in comment (about
302 2013-01-07 Ivan Maidanski <ivmai@mail.ru>
304 * src/atomic_ops/sysdeps/read_ordered.h (AO_char_load_read,
305 AO_short_load_read, AO_int_load_read): Change return type (and the
306 type of "result" local variable) from AO_t to the type matching the
307 name of the function (i.e., unsigned char/short/int, respectively).
309 2013-01-06 Ivan Maidanski <ivmai@mail.ru>
311 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Insert
312 AO_compiler_barrier for AO_UNIPROCESSOR case.
313 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Likewise.
314 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Likewise.
315 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Refine comment.
317 2013-01-05 Ivan Maidanski <ivmai@mail.ru>
319 * src/atomic_ops/Makefile.in: Regenerate (by autoreconf -vif).
321 2013-01-04 Ivan Maidanski <ivmai@mail.ru>
323 * src/atomic_ops/Makefile.am (BUILT_SOURCES): Define to force
324 regeneration of generalize-small.h (if the corresponding
325 source template is changed) before compilation of .c files (that use
328 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
330 * src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
331 Add missed definition based on CAS.
332 * src/atomic_ops/generalize-small.h: Regenerate.
334 2013-01-02 Ivan Maidanski <ivmai@mail.ru>
336 * src/atomic_ops/generalize-small.template (AO_XSIZE_load): Move
337 definition (which is based on AO_XSIZE_load_acquire) down to be after
338 AO_XSIZE_load_acquire definition.
339 * src/atomic_ops/generalize-small.template (AO_XSIZE_store): Move
340 definition (which is based on AO_XSIZE_store_release) down to be after
341 AO_XSIZE_store_release definition.
342 * src/atomic_ops/generalize-small.h : Regenerate.
344 2012-10-09 Ivan Maidanski <ivmai@mail.ru>
346 * tests/test_stack.c (run_one_test): Change type of "index" local
347 variable from long to int to match printf format specifier (when
348 VERBOSE defined); cast from "arg" pointer to integer via size_t (to
349 avoid 64-bit compiler warning).
351 2012-10-08 Ivan Maidanski <ivmai@mail.ru>
353 * src/atomic_ops/sysdeps/gcc/x86.h (AO_double_compare_and_swap_full):
354 New function (only if __x86_64__) implemented using GCC built-in
355 __sync CAS primitive available for x32.
356 * src/atomic_ops/sysdeps/gcc/x86.h
357 (AO_HAVE_double_compare_and_swap_full): New macro (for x32 only).
358 * src/atomic_ops/sysdeps/gcc/x86.h
359 (AO_compare_double_and_swap_double_full): Implement using
360 double_compare_and_swap_full instead of cmpxchg8b for x32 (since
361 x86_64 has cmpxchg and cmpxchg16b but not cmpxchg8b).
363 2012-10-05 Ivan Maidanski <ivmai@mail.ru>
365 * src/atomic_ops.h: Fix typos in comments (update generalize.h
368 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
370 * src/atomic_ops.c (AO_pause): Fix millis value (passed to Win32
371 Sleep) for the case of 'n' argument in range between 12 and 21,
372 inclusive if AO_USE_WIN32_PTHREADS (sleep for 1 ms in this case).
373 * src/atomic_ops_stack.c (AO_pause): Evaluate 'msecs' value using the
374 same algorithm as in atomic_ops.c (Win32 only).
376 2012-10-03 Ivan Maidanski <ivmai@mail.ru>
378 * src/atomic_ops_stack.c (dummy): Define as static (to make symbol
379 without AO_ prefix visible only within this file); initialize to 1
380 (same as in atomic_ops.c, so that AO_spin would never really alter
383 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
385 * src/atomic_ops.h: Fix 'load' primitive name in comment (replace
386 AO_load_release_read with AO_load_acquire_read).
388 2012-10-02 Ivan Maidanski <ivmai@mail.ru>
390 * src/atomic_ops/sysdeps/emul_cas.h
391 (AO_compare_double_and_swap_double_full): Test (define if)
392 AO_HAVE_compare_double_and_swap_double_full macro instead of
393 AO_HAVE_compare_double_and_swap_double.
395 2012-10-01 Ivan Maidanski <ivmai@mail.ru>
397 * src/atomic_ops/sysdeps/standard_ao_double_t.h (double_ptr_storage):
398 Define as "unsigned long long" instead of __m128 for gcc/x32 (i.e.,
399 ILP32 on x86_64); update and reformat comment.
401 2012-09-19 Ivan Maidanski <ivmai@mail.ru>
403 * configure: Regenerate (by autoreconf -vif using autoconf-2.68,
404 automake-1.11.3 and libtool-2.4.2).
406 * Makefile.in: Likewise.
407 * aclocal.m4: Likewise.
409 * config.guess: Likewise.
410 * config.sub: Likewise.
412 * doc/Makefile.in: Likewise.
413 * install-sh: Likewise.
415 * src/Makefile.in: Likewise.
416 * src/atomic_ops/Makefile.in: Likewise.
417 * src/atomic_ops/sysdeps/Makefile.in: Likewise.
418 * tests/Makefile.in: Likewise.
420 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
422 * src/atomic_ops.h: Include gcc/x86.h instead of gcc/x86_64.h if
423 gcc/x32 (i.e., GCC (or Intel compiler), __x86_64__ is defined, and
424 __ILP32__ is defined) to have AO_compare_double_and_swap_double_full
425 defined properly (based on cmpxchg8b); explicitly define
426 AO_USE_PENTIUM4_INSTRS for gcc/x32.
427 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove ILP32-specific code
428 (AO_T_IS_INT definition).
430 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
432 * src/atomic_ops/sysdeps/sunc/x86_64.h
433 (AO_compare_double_and_swap_double_full): Fix inline assembly
434 arguments commenting out "m"(*addr) one (similar to that in
435 sunc/x86.h) if AO_CMPXCHG16B_AVAILABLE defined.
437 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
439 * src/atomic_ops/sysdeps/gcc/x86_64.h
440 (AO_compare_double_and_swap_double_full): Fix a typo in comment.
441 * src/atomic_ops/sysdeps/sunc/x86_64.h
442 (AO_compare_double_and_swap_double_full): Likewise.
444 2012-09-18 Ivan Maidanski <ivmai@mail.ru>
446 * tests/test_atomic.c (acqrel_thr): Call abort() after fprintf(stderr).
447 * tests/test_malloc.c (run_one_test): Likewise.
448 * tests/test_stack.c (check_list, main): Likewise.
450 2012-09-05 Ivan Maidanski <ivmai@mail.ru>
452 * src/atomic_ops/sysdeps/gcc/x86.h
453 (AO_compare_double_and_swap_double_full): Re-implement for PIC mode
454 saving EBX to a local variable (instead of pushing it to stack) and
455 saving memory operand address to a register (edi which is manually
456 preserved), so that the whole code could also work even if EBX points
457 to memory operand (e.g., in Clang); test __PIC__ using ifdef (instead
458 of "if"); update comments; reformat code.
462 2012-08-09 Ivan Maidanski <ivmai@mail.ru>
464 * README: Change version to 7.2d (rev. D).
466 2012-08-01 Ivan Maidanski <ivmai@mail.ru>
468 * src/atomic_ops.h (AO_compiler_barrier): Add parentheses and cast to
471 2012-07-12 Ivan Maidanski <ivmai@mail.ru>
473 * config.guess: Regenerate (by autoreconf -vif using autoconf-2.68,
474 automake-1.11.1 and libtool-2.4).
475 * config.sub: Likewise.
477 2012-07-04 Ivan Maidanski <ivmai@mail.ru>
479 * src/atomic_ops/sysdeps/gcc/x86.h
480 (AO_compare_double_and_swap_double_full): Use EDI register for
481 "new_val1" argument in PIC mode only for GCC 4.3+ to workaround
482 a problem with older compiler versions (e.g., GCC 4.2.1 [FreeBSD])
483 that do not recognize 'D' as a valid register specification; update
486 2012-07-01 Ivan Maidanski <ivmai@mail.ru>
488 * src/atomic_ops/generalize-small.template
489 (AO_XSIZE_fetch_and_add_full,
490 AO_XSIZE_fetch_and_add_acquire, AO_XSIZE_fetch_and_add_release):
491 Fix type of function result by adding
492 'unsigned' to XCTYPE.
493 * src/atomic_ops/generalize-small.h: Regenerate.
497 2012-05-11 Ivan Maidanski <ivmai@mail.ru>
499 * configure.ac, README: Bump version to 7.2 (final).
500 * configure: Regenerate.
502 2012-05-01 H.J. Lu <hjl.tools@gmail.com>
504 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_fetch_and_add_full,
505 AO_and_full, AO_or_full, AO_xor_full, AO_compare_and_swap_full):
506 Remove 'q' suffix in asm instruction.
508 2012-04-16 H.J. Lu <hjl.tools@gmail.com>
510 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_T_IS_INT): Defined
513 2012-03-28 Ivan Maidanski <ivmai@mail.ru>
515 * configure.ac (PICFLAG): Adjust AC_MSG_CHECKING message; report
516 "none" result if no -fPIC is needed (for Cygwin/MinGW); determine
517 whether GCC -fPIC option causes __PIC__ macro definition; pass
518 -D __PIC__ to PICFLAG (instead of CFLAGS) only if not defined
519 automatically in case -fPIC specified; update comment.
521 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
523 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Do not use __m128
524 if GCC pre-v4 (at least, xmmintrin.h is missing in gcc-3.4.3-x86_64
525 included in Solaris 10 distribution).
527 2012-03-26 Ivan Maidanski <ivmai@mail.ru>
529 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Fix a typo in
532 2012-03-19 Ivan Maidanski <ivmai@mail.ru>
534 * configure: Regenerate.
535 * Makefile.in: Likewise.
537 2011-08-14 Petter Urkedal <paurkedal@gmail.com>
539 * atomic_ops.pc.in -> pkgconfig/atomic_ops.pc.in: Moved.
540 * pkgconfig/atomic_ops-uninstalled.pc.in: Added developer version.
541 * configure.ac, Makefile.am: Update accordingly.
543 2011-08-04 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
545 * atomic_ops.pc.in: new file.
546 * Makefile.am (pkgconfigdir, pkgconfig_DATA): new items.
547 * configure.ac (AC_CONFIG_FILES): add atomic_ops.pc.
548 * configure, Makefile.in: Regenerate.
550 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
552 * src/atomic_ops/sysdeps/gcc/x86.h
553 (AO_compare_double_and_swap_double_full): Use EDI register for
554 "new_val1" argument instead of a memory operand and use XCHG assembler
555 instruction instead of push/pop in case of PIC mode (to workaround
556 a bug in GCC 4.6.1); update the comment.
558 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
560 * src/atomic_ops_stack.c (AO_stack_push_release): Make "cptr" local
561 variable volatile to workaround a bug in clang-1.1/x86 compiler; add
564 2012-03-07 Ivan Maidanski <ivmai@mail.ru>
566 * src/atomic_ops/sysdeps/gcc/x86.h
567 (AO_compare_double_and_swap_double_full): Fix argument name in the
569 * src/atomic_ops/sysdeps/sunc/x86.h
570 (AO_compare_double_and_swap_double_full): Likewise.
572 2012-03-04 Ivan Maidanski <ivmai@mail.ru>
574 * src/atomic_ops_malloc.h (AO_malloc_enable_mmap): Fix a typo in the
577 2012-01-19 Ivan Maidanski <ivmai@mail.ru>
579 * tests/test_atomic.c (main): Put "void" keyword into the arguments
580 specification of the function prototype.
581 * tests/test_stack.c (main): Likewise.
583 2011-12-16 Ivan Maidanski <ivmai@mail.ru>
585 * src/atomic_ops/sysdeps/gcc/arm.h (__ARM_ARCH_7__, __ARM_ARCH_7A__):
586 Recognize to override __ARM_ARCH_5xx__ macros (since Android NDK GCC
587 defines both for armv7); update comment.
589 2011-11-29 Ivan Maidanski <ivmai@mail.ru>
591 * src/atomic_ops/sysdeps/gcc/hexagon.h: Include generalize.h file
592 before ao_t_is_int.h one.
593 * src/atomic_ops/sysdeps/gcc/ia64.h: Likewise.
594 * src/atomic_ops/sysdeps/hpc/ia64.h: Likewise.
596 2011-11-03 Ivan Maidanski <ivmai@mail.ru>
598 * src/atomic_ops/generalize-small.template
599 (AO_XSIZE_fetch_and_add_full, AO_XSIZE_fetch_and_add_acquire,
600 AO_XSIZE_fetch_and_add_release): Change return type from AO_t to
602 * src/atomic_ops/generalize-small.h: Regenerate.
604 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
606 * src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap_full):
607 Change "result" local variable type from AO_t to int.
608 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_compare_and_swap_full):
611 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
613 * tests/test_atomic_include.h: Regenerate.
615 2011-10-24 Ivan Maidanski <ivmai@mail.ru>
617 * tests/test_atomic_include.template (test_atomicXX): Add action for
618 the missing AO_compare_and_swap primitive.
620 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
622 * src/atomic_ops.c (init_lock): Define only unless AO_USE_NO_SIGNALS.
624 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
626 * doc/README.txt: Fix a typo.
628 2011-10-21 Ivan Maidanski <ivmai@mail.ru>
630 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Cast
631 returned value to int.
633 2011-10-17 Ivan Maidanski <ivmai@mail.ru>
635 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
637 2011-10-17 Ivan Maidanski <ivmai@mail.ru> (really Thorsten Glaser)
639 * src/atomic_ops/sysdeps/gcc/m68k.h (AO_test_and_set_full): Cast the
642 2011-10-15 Ivan Maidanski <ivmai@mail.ru>
644 * src/atomic_ops/sysdeps/gcc/s390.h (AO_compare_and_swap_full):
645 Change return from AO_t to int.
646 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_compare_and_swap_acquire,
647 AO_compare_and_swap_release, AO_compare_and_swap_full): Likewise.
649 2011-10-11 Ivan Maidanski <ivmai@mail.ru> (really Linas Vepstas)
651 * src/atomic_ops/sysdeps/Makefile.am (nobase_private_HEADERS): Add
653 * src/atomic_ops.h: Include hexagon.h file.
654 * src/atomic_ops/sysdeps/gcc/hexagon.h: New file.
656 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
659 (AO_non_posix_implementation_is_entirely_in_headers): Make external.
661 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
663 * configure: Regenerate.
664 * tests/Makefile.in: Ditto.
665 * tests/test_atomic_include.h: Ditto.
667 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
669 * configure.ac (PICFLAG, THREADDLLIBS): Define as empty for MinGW.
670 * configure.ac (have_pthreads): New definition (set to true unless
672 * configure.ac (HAVE_PTHREAD_H): New AM conditional (based on
673 have_pthreads value).
674 * tests/Makefile.am (test_atomic_pthreads_SOURCES,
675 test_atomic_pthreads_CPPFLAGS, test_atomic_pthreads_LDADD): Define
676 only if HAVE_PTHREAD_H.
677 * tests/Makefile.am (TESTS): Don't include test_atomic_pthreads unless
679 * tests/Makefile.am (check_PROGRAMS): Define to TESTS value.
681 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
683 * configure.ac (PICFLAG): Set to -fPIC if GCC but not Gygwin.
685 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
687 * tests/test_malloc.c (LIST_LENGTH, LARGE_OBJ_SIZE): Define to
688 a smaller value unless HAVE_MMAP.
690 2011-09-21 Ivan Maidanski <ivmai@mail.ru>
692 * tests/test_malloc.c (cons, run_one_test): Call exit with a non-zero
693 code (instead of abort) if out of memory.
694 * tests/test_stack.c (add_elements): Likewise.
695 * tests/test_stack.c (main): Use a distinct exit code if a thread
698 2011-09-15 Ivan Maidanski <ivmai@mail.ru>
700 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo (replace AO_FORCE_CAS
701 with AO_REQUIRE_CAS in a comment).
703 2011-09-08 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
705 * src/Makefile.am, tests/Makefile.am: Set compiler include paths
706 to $(top_builddir)/src and $(top_srcdir)/src.
707 * src/Makefile.in: Regenerate.
708 * tests/Makefile.in: Ditto.
710 2011-07-14 Ivan Maidanski <ivmai@mail.ru>
712 * tests/list_atomic.template (list_atomicXX): Remove "addr" local
713 variable (use "&val" instead); initialize "newval" and "oldval"
714 local variables; rename "tsaddr" local variable to "ts" one.
715 * tests/list_atomic.template (list_atomicXX): Fix
716 AO_test_and_setXX call (pass address instead of value).
717 * tests/list_atomic.template: Expand all tabs to spaces; remove
718 trailing spaces at EOLn.
719 * tests/run_parallel.inc: Ditto.
720 * tests/test_atomic.c: Ditto.
721 * tests/list_atomic.c: Regenerate.
722 * tests/run_parallel.inc (AO_PTRDIFF_T): New macro.
723 * tests/run_parallel.inc (tramp): Cast between pointer and integer
724 types via casting to AO_PTRDIFF_T.
725 * tests/test_atomic.c (add1sub1_thr, acqrel_thr): Ditto.
726 * tests/run_parallel.inc (run_parallel): Adjust printf format
727 specifiers for DWORD parameters.
728 * tests/test_stack.c: Skip test if no pthreads.
730 2011-06-27 Ivan Maidanski <ivmai@mail.ru> (really Jeremy Huddleston)
732 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
733 Explicitly cast 0xff to unsigned char (otherwise LLVM v2.7 GAS
734 reports an error); don't recognize AO_XCHGB_RET_WORD.
735 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
738 2011-06-15 Ivan Maidanski <ivmai@mail.ru>
740 * configure.ac, README: Change to version 7.2alpha7.
741 * configure: Regenerate.
745 2011-06-14 Ivan Maidanski <ivmai@mail.ru>
747 * configure.ac, README: Change to version 7.2alpha6.
748 * configure: Regenerate.
750 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
752 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_load): Do not
753 define for pre-ARMv6 directly (revert part of the previous
755 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set,
756 AO_test_and_set_full): Refine the comment.
757 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Define
758 SWP-based implementation at the end of file (if none of
759 AO_test_and_set functions are defined previously).
760 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Remove
761 SWP-based implementation (revert part of the previous commit).
762 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store): Remove redundant
763 definition at the file end (revert part of the previous commit).
765 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
767 * src/atomic_ops/sysdeps/gcc/arm.h: Handle ARMv6M architecture.
768 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Force "swp"
769 instruction usage (instead of ldrex/strex) if AO_FORCE_USE_SWP;
771 * src/atomic_ops/sysdeps/gcc/arm.h
772 (AO_compare_double_and_swap_double): Handle ARMv7EM architecture
774 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set, AO_nop_full,
775 AO_load, AO_store): Define at the end of file (in case not defined
778 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
780 * src/atomic_ops/generalize.h: Reformat code.
781 * src/atomic_ops/generalize.h (AO_test_and_set_acquire): Fix
783 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_test_and_set): Ditto.
784 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Ditto.
785 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Add
786 a comment (about SWP instruction).
788 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
790 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
791 AO_THUMB_RESTORE_MODE): Use single-digit labels (to workaround
792 a bug in GCC v4.2.1 which reports "garbage following instruction"
794 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Use "IT"
795 instruction only for Thumb-2 mode.
797 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
799 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
800 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define as empty
802 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
803 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
804 AO_compare_and_swap, AO_compare_double_and_swap_double): Remove
805 unnecessary "memory" keyword from the list of clobbered registers
806 (revert part of the previous commit).
807 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Add
808 a comment for "IT" instruction.
809 * src/atomic_ops/sysdeps/gcc/arm.h
810 (AO_compare_double_and_swap_double): Don't define on the
811 architectures where unimplemented; add a comment; replace return
812 (in the loop) statement with break.
814 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
816 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
817 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define new
818 macro (to switch temporarily CPU mode to ARM in inline assembler
819 if compiling in the Thumb mode and to restore it back on leave).
820 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_store,
821 AO_test_and_set, AO_fetch_and_add, AO_fetch_and_add1,
822 AO_fetch_and_sub1, AO_compare_and_swap, AO_test_and_set_full):
823 Enable compilation in the Thumb mode (use AO_THUMB_GO_ARM,
824 AO_THUMB_RESTORE_MODE and AO_THUMB_SWITCH_CLOBBERS macros).
825 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
826 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
827 AO_compare_and_swap, AO_compare_double_and_swap_double): Add
828 "memory" to the list of clobbered registers.
830 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
832 * src/atomic_ops/sysdeps/gcc/arm.h: Reformat code.
833 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
834 AO_test_and_set_full): Add assembler comment containing the
837 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
839 * tests/test_malloc.c (run_one_test): Test AO_malloc() result
840 (if out of memory then print the message and abort).
841 * tests/test_stack.c (add_elements): Ditto.
843 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
845 * src/atomic_ops/generalize.h (AO_HAVE_or_full): Add missing
847 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_HAVE_nop_write):
849 * src/atomic_ops/sysdeps/read_ordered.h (AO_HAVE_nop_read): Ditto.
850 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_store_release):
853 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
855 * src/atomic_ops/generalize-small.template
856 (AO_HAVE_XSIZE_fetch_and_add_full): Add missing definition.
857 * src/atomic_ops/generalize-small.template: Reformat code.
858 * src/atomic_ops/generalize-small.h: Regenerate.
860 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
862 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Remove
863 blank line between AO_func and AO_HAVE_func definitions.
864 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
865 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
866 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
867 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
868 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
869 * src/atomic_ops/sysdeps/ordered.h: Ditto.
870 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
871 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
872 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
873 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
874 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
875 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
876 * src/atomic_ops/sysdeps/gcc/cris.h: Ditto.
877 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
878 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
879 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
880 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
881 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
882 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
883 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
884 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
885 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
886 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
887 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
888 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
889 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
890 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
891 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
892 * src/atomic_ops/sysdeps/sunc/sparc.h: Ditto.
893 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
894 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
895 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Reformat
897 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
898 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
899 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
900 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
901 * src/atomic_ops/sysdeps/ordered.h: Ditto.
902 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
903 * src/atomic_ops/sysdeps/test_and_set_t_is_char.h: Remove file
905 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Don't
907 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire,
908 AO_test_and_set, AO_compare_and_swap): Merge adjacent definitions.
909 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_store_release):
911 * src/atomic_ops/sysdeps/sunc/sparc.h: Expand all tabs to spaces;
912 remove trailing spaces at EOLn.
914 2011-06-02 Ivan Maidanski <ivmai@mail.ru>
916 * tests/test_malloc.c (main): Remove unused "exper_n" local
918 * tests/test_stack.c (run_one_test): Remove unused "aux" local
921 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
923 * src/atomic_ops/sysdeps/gcc/arm.h
924 (AO_compare_double_and_swap_double,
925 AO_HAVE_compare_double_and_swap_double): Define only starting from
927 * src/atomic_ops/sysdeps/gcc/arm.h
928 (AO_compare_double_and_swap_double): Fix function name in
929 assembler code; replace while (1) loop with "do-while".
931 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
933 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full):
934 Specify "%b0" (instead of "%0") in "xchg" instruction (to
935 workaround a bug in Sun C 5.11).
936 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
939 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
941 * src/atomic_ops_malloc.c (AO_malloc_enable_mmap): Workaround for
942 Sun C compiler (call "release" variant of AO_store).
944 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
946 * configure.ac (_PTHREADS): New template (used for NetBSD).
947 * configure.ac (THREADDLLIBS): New macro.
948 * tests/Makefile.am (test_atomic_LDADD, test_stack_LDADD,
949 test_atomic_pthreads_LDADD, test_malloc_LDADD): Use THREADDLLIBS
950 instead of "-lpthread".
951 * configure: Regenerate.
952 * Makefile.in: Ditto.
953 * doc/Makefile.in: Ditto.
954 * src/Makefile.in: Ditto.
955 * src/atomic_ops/Makefile.in: Ditto.
956 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
957 * src/config.h.in: Ditto.
958 * tests/Makefile.in: Ditto.
960 2011-05-30 Ivan Maidanski <ivmai@mail.ru>
962 * configure.ac (PIC): Add workaround for GCC v3.4.6 which does not
963 define the corresponding macro.
964 * configure.ac: Don't check for GCC twice.
965 * configure: Regenerate.
966 * tests/test_malloc.c (DEFAULT_NTHREADS): New macro.
967 * tests/test_malloc.c (run_one_test): Refine printed message (in
969 * tests/test_malloc.c (main): Use DEFAULT_NTHREADS.
970 * tests/test_stack.c (main): Cast AO_stack_pop() returned pointer.
971 * src/atomic_ops_malloc.c (USE_MMAP_ANON, GC_MMAP_FLAGS,
972 OPT_MAP_ANON): New macro.
973 * src/atomic_ops_malloc.c (get_mmaped): Pass -1 (instead of 0) as
974 file descriptor to mmap() if MAP_ANONYMOUS (same as for MAP_ANON).
975 * src/atomic_ops_malloc.c (get_mmaped): Use USE_MMAP_ANON,
976 GC_MMAP_FLAGS and OPT_MAP_ANON macros; reformat code; check open()
979 2011-05-11 Ivan Maidanski <ivmai@mail.ru>
981 * tests/test_malloc.c: Expand all tabs to spaces; remove trailing
983 * tests/test_malloc.c (LENGTH, LARGE): Rename to LIST_LENGTH and
984 LARGE_OBJ_SIZE, respectively.
985 * tests/test_malloc.c (MAX_NTHREADS, N_REVERSALS, LIST_LENGTH,
986 LARGE_OBJ_SIZE): Do not define unless undefined.
987 * tests/test_malloc.c (run_one_test): Recognize DEBUG_RUN_ONE_TEST
990 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
992 * tests/Makefile.am (EXTRA_DIST): Add list_atomic.c; update
994 * tests/Makefile.am (CLEANFILES): Remove test_atomic_include.h,
996 * tests/Makefile.am: Remove trailing spaces at EOLn.
997 * tests/Makefile.in: Regenerate.
999 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
1001 * tests/test_stack.c (MAX_NTHREADS, N_EXPERIMENTS): Do not define
1003 * tests/test_stack.c: Expand all tabs to spaces.
1004 * tests/test_atomic_include.h: Ditto.
1005 * tests/test_stack.c (main): Free pop'ed elements.
1006 * tests/test_atomic_include.h (test_atomic, test_atomic_release,
1007 test_atomic_acquire, test_atomic_read, test_atomic_write,
1008 test_atomic_full, test_atomic_release_write,
1009 test_atomic_acquire_read): Remove prototype.
1011 2011-04-22 Ivan Maidanski <ivmai@mail.ru>
1013 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_MASK): Add "volatile" for
1014 asm; remove redundant trailing ';'.
1016 2011-04-11 Ivan Maidanski <ivmai@mail.ru> (really Jim Meyering)
1018 * doc/README.txt: Remove doubled words in comments.
1020 2011-03-18 Ivan Maidanski <ivmai@mail.ru>
1022 * src/atomic_ops/sysdeps/gcc/arm.h: Test for all the known pre-v6
1023 ARM chips instead of all the currently existing v6+ ones.
1025 2011-03-13 Ivan Maidanski <ivmai@mail.ru>
1027 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo in a comment;
1028 expand all tabs to spaces.
1029 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
1030 Recognize AO_XCHGB_RET_WORD new macro (to workaround a bug).
1031 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
1034 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
1036 * src/atomic_ops.c: Include sys/time.h (to get timespec) for NaCl.
1037 * src/atomic_ops_malloc.c (msb): Do the shift by 32 only once (in
1038 a conditional expression) to prevent a compiler warning.
1039 * src/atomic_ops_malloc.c: Expand all tabs to spaces; remove
1040 trailing spaces at EOLn.
1042 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
1044 * src/atomic_ops.c: Explicitly define AO_USE_NO_SIGNALS and
1045 AO_USE_NANOSLEEP for NaCl.
1047 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
1049 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
1050 automake-1.11.1 and libtool-2.4).
1053 2011-02-09 Ivan Maidanski <ivmai@mail.ru>
1055 * src/atomic_ops.c (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): New
1057 * src/atomic_ops.c (AO_USE_WIN32_PTHREADS): Imply
1059 * src/atomic_ops.c: Don't include signal.h if AO_USE_NO_SIGNALS.
1060 * src/atomic_ops.c: Include time.h if AO_USE_NANOSLEEP.
1061 * src/atomic_ops.c (AO_locks, AO_pause): Reformat the code.
1062 * src/atomic_ops.c (AO_pause): Use nanosleep() if
1064 * src/atomic_ops.c (all_sigs, initialized,
1065 AO_compare_and_swap_emulation,
1066 AO_compare_double_and_swap_double_emulation): Use
1067 AO_USE_NO_SIGNALS instead of AO_USE_WIN32_PTHREADS.
1069 2011-01-07 Ivan Maidanski <ivmai@mail.ru>
1071 * src/.cvsignore: Add more auto-generated files.
1072 * tests/.cvsignore: Ditto.
1073 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full, AO_store,
1074 AO_compare_double_and_swap_double): Reformat code.
1075 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
1076 AO_compare_double_and_swap_double): Ditto.
1077 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
1078 Produce "it eq" instruction only for Thumb mode.
1079 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
1081 2010-11-23 Ivan Maidanski <ivmai@mail.ru> (really Michael Hope)
1083 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
1084 Insert "it eq" just before "strexeq" (required for Thumb-2 mode,
1085 ignored in ARM mode).
1086 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
1088 2010-09-15 Ivan Maidanski <ivmai@mail.ru> (with input from Gregory Farnum)
1090 * src/atomic_ops.h: Include armcc/arm_v6.h if __ARMCC__.
1091 * src/atomic_ops.h: Include ibmc/powerpc.h if __IBMC__.
1092 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if msftc/arm.h is
1094 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if AO_CAN_EMUL_CAS
1095 is defined but emul_cas.h has not been included.
1096 * src/atomic_ops/sysdeps/gcc/arm.h: Fix a typo.
1098 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
1100 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
1101 automake-1.11.1 and libtool-2.2.8).
1104 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
1106 * src/atomic_ops/sysdeps/gcc/arm.h: Replace C++ style comment
1109 2010-05-30 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
1111 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Use
1112 "register long" (instead of "int") for "ret" variable.
1113 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Replace
1114 with AO_test_and_set_full (same for AO_HAVE_test_and_set).
1115 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_compare_and_swap_full):
1116 New function implemented.
1118 2010-05-22 Ivan Maidanski <ivmai@mail.ru>
1120 * src/atomic_ops/sysdeps/Makefile.am (nobase_sysdep_HEADERS):
1122 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1124 2010-05-21 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
1126 * src/atomic_ops.h: Recognize __avr32__ (include gcc/avr32.h).
1127 * src/atomic_ops/sysdeps/gcc/avr32.h: New file.
1129 2010-04-29 Ivan Maidanski <ivmai@mail.ru>
1131 * doc/README_malloc.txt: Fix a typo.
1132 * doc/README_stack.txt: Ditto.
1134 2010-02-25 Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
1136 * .cvsignore: New file.
1137 * doc/.cvsignore: Ditto.
1138 * src/.cvsignore: Ditto.
1139 * src/atomic_ops/.cvsignore: Ditto.
1140 * src/atomic_ops/sysdeps/.cvsignore: Ditto.
1141 * tests/.cvsignore: Ditto.
1143 2010-02-19 Ivan Maidanski <ivmai@mail.ru> (mostly really Patrick Marlier)
1145 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full):
1146 Use __sync_bool_compare_and_swap() if AO_USE_SYNC_CAS_BUILTIN.
1147 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1149 * src/atomic_ops.h (AO_USE_SYNC_CAS_BUILTIN): New macro defined
1150 if GCC v4.2+ or Intel compiler v11.1+ (only for amd64).
1151 * src/atomic_ops.h: Include GCC-specific sysdeps files for Intel
1152 compiler in GCC compatible mode (only for x86 and amd64).
1154 2010-02-18 Ivan Maidanski <ivmai@mail.ru>
1156 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Don't check
1157 for AO_USE_PENTIUM4_INSTRS (since "mfence" (SSE2) is supported on
1158 all x86_64/amd64 chips); remove the comment.
1159 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1160 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Define only
1161 if AO_ASM_X64_AVAILABLE.
1162 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
1163 Use built-in __sync_bool_compare_and_swap() if GCC v4.2+.
1165 2010-02-17 Ivan Maidanski <ivmai@mail.ru> (really Patrick Marlier)
1167 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full,
1168 AO_compare_double_and_swap_double_full): Use EAX for the result
1169 since cmpxchg clobbers it.
1170 * src/atomic_ops/sysdeps/sunc/x86.h (AO_compare_and_swap_full,
1171 AO_compare_double_and_swap_double_full): Ditto.
1172 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full,
1173 AO_compare_double_and_swap_double_full): Ditto.
1174 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_compare_and_swap_full,
1175 AO_compare_double_and_swap_double_full): Ditto.
1177 2010-02-04 Ivan Maidanski <ivmai@mail.ru>
1179 * doc/Makefile.in: Regenerate.
1181 2010-02-04 Ivan Maidanski <ivmai@mail.ru> (really Ian Wienand)
1183 * doc/Makefile.am: Remove duplicate file in the list.
1185 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1187 * ChangeLog: Fix some typos.
1189 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
1191 * src/atomic_ops_stack.c (AO_stack_push_explicit_aux_release):
1192 Define "i" variable only if used (to suppress a compiler warning).
1194 2010-02-02 Ivan Maidanski <ivmai@mail.ru>
1196 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full): Fix
1197 "xchg" data size (remove "l" suffix).
1198 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
1200 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full): Use
1202 * src/atomic_ops/sysdeps/sunc/x86.h
1203 (AO_compare_double_and_swap_double_full,
1204 AO_HAVE_compare_double_and_swap_double_full): Comment out (since
1205 not tested, might be wrong, and tickles a bug in some Sun CC
1206 versions; besides, __PIC__ macro is never predefined by Sun CC).
1208 2010-01-29 Ivan Maidanski <ivmai@mail.ru>
1210 * INSTALL: Regenerate (by autoreconf -vif using libtool-2.2.6b,
1211 automake-1.11.1, autoconf-2.65).
1212 * Makefile.in: Ditto.
1213 * aclocal.m4: Ditto.
1215 * config.guess: Ditto.
1216 * config.sub: Ditto.
1219 * install-sh: Ditto.
1221 * mkinstalldirs: Ditto.
1222 * doc/Makefile.in: Ditto.
1223 * src/Makefile.in: Ditto.
1224 * src/atomic_ops/Makefile.in: Ditto.
1225 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1226 * src/config.h.in: Ditto.
1227 * tests/Makefile.in: Ditto.
1229 2009-12-19 Ivan Maidanski <ivmai@mail.ru>
1231 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_lwsync): Redirect to
1232 AO_sync() if __NO_LWSYNC__ (same as for gcc/powerpc.h).
1234 2009-12-17 Ivan Maidanski <ivmai@mail.ru> (really Emmanuel Stapf)
1236 * src/atomic_ops.h: Recognize _M_X64 (as an alias for _AMD64_).
1238 2009-12-04 Ivan Maidanski <ivmai@mail.ru>
1240 * configure.ac, README: Change to version 7.2alpha5.
1241 * configure: Regenerate.
1245 2009-12-02 Ivan Maidanski <ivmai@mail.ru>
1247 * configure.ac, README: Change to version 7.2alpha4.
1248 * configure: Regenerate.
1250 2009-12-01 Ivan Maidanski <ivmai@mail.ru>
1252 * configure.ac, README: Change to version 1.3alpha1.
1253 * configure: Regenerate.
1255 2009-11-21 Ivan Maidanski <ivmai@mail.ru> (really Daniel R. Grayson)
1257 * configure.ac (AC_CONFIG_COMMANDS): Quote PICFLAG, CC, DEFS
1259 * configure: Regenerate.
1261 2009-10-06 Ivan Maidanski <ivmai@mail.ru>
1263 * src/atomic_ops/sysdeps/gcc/sh.h: Remove commented out AO_TS_SET
1266 2009-10-05 Ivan Maidanski <ivmai@mail.ru>
1268 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1270 2009-10-05 Ivan Maidanski <ivmai@mail.ru> (really Takashi YOSHII)
1272 * src/atomic_ops/sysdeps/gcc/sh.h: New file.
1273 * src/atomic_ops.h: Include gcc/sh.h if __arm__.
1274 * src/atomic_ops/sysdeps/Makefile.am: Add gcc/sh.h entry.
1276 2009-10-02 Ivan Maidanski <ivmai@mail.ru>
1278 * src/atomic_ops/sysdeps/Makefile.am: Add armcc/arm_v6.h,
1279 msftc/arm.h, msftc/common32_defs.h, sunc/x86.h sunc/x86_64.h
1280 entries; order all entries alphabetically.
1281 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1283 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1285 * aclocal.m4: Regenerate (by autoreconf -vif using libtool-2.2,
1286 automake-1.10.2, autoconf-2.64).
1288 * Makefile.in: Ditto.
1289 * aclocal.m4: Ditto.
1290 * config.guess: Ditto.
1291 * config.sub: Ditto.
1294 * install-sh: Ditto.
1296 * mkinstalldirs: Ditto.
1297 * doc/Makefile.in: Ditto.
1298 * src/config.h.in: Ditto.
1299 * src/Makefile.in: Ditto.
1300 * src/atomic_ops/Makefile.in: Ditto.
1301 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1302 * tests/Makefile.in: Ditto.
1304 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
1306 * src/atomic_ops/sysdeps/gcc/x86.h: Remove spaces preceding '#'
1307 for the preprocessor directives.
1308 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1310 2009-09-30 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1312 * README: Move notes from the hand-edited part of INSTALL which
1313 was overwritten by Automake recently.
1315 2009-09-26 Ivan Maidanski <ivmai@mail.ru>
1317 * aclocal.m4: Regenerate (by autoreconf -vif).
1318 * config.guess: Ditto.
1319 * config.sub: Ditto.
1322 * Makefile.in: Ditto.
1323 * doc/Makefile.in: Ditto.
1324 * src/config.h.in: Ditto.
1325 * src/Makefile.in: Ditto.
1326 * src/atomic_ops/Makefile.in: Ditto.
1327 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
1328 * tests/Makefile.in: Ditto.
1330 2009-09-25 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
1332 * configure.ac: Replace AC_PROG_CC with AM_PROG_CC_C_O.
1334 2009-09-16 Ivan Maidanski <ivmai@mail.ru>
1336 * ChangeLog: Remove trailing spaces at EOLn.
1337 * doc/README.txt: Expand all tabs to spaces; remove trailing
1338 spaces at EOLn; remove multiple trailing blank lines.
1339 * src/atomic_ops.c: Ditto.
1340 * src/atomic_ops.h: Ditto.
1341 * src/atomic_ops/generalize-small.h: Ditto.
1342 * src/atomic_ops/generalize.h: Ditto.
1343 * src/atomic_ops/sysdeps/acquire_release_volatile.h: Ditto.
1344 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Ditto.
1345 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Ditto.
1346 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Ditto.
1347 * src/atomic_ops/sysdeps/ao_t_is_int.h: Ditto.
1348 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Ditto.
1349 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
1350 * src/atomic_ops/sysdeps/char_acquire_release_volatile.h: Ditto.
1351 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
1352 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
1353 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
1354 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
1355 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
1356 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
1357 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
1358 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
1359 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
1360 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
1361 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
1362 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
1363 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
1364 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
1365 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
1366 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
1367 * src/atomic_ops/sysdeps/icc/ia64.h: Ditto.
1368 * src/atomic_ops/sysdeps/int_acquire_release_volatile.h: Ditto.
1369 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
1370 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
1371 * src/atomic_ops/sysdeps/msftc/arm.h: Ditto.
1372 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
1373 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
1374 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1375 * src/atomic_ops/sysdeps/ordered.h: Ditto.
1376 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
1377 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
1378 * src/atomic_ops/sysdeps/short_acquire_release_volatile.h: Ditto.
1379 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
1380 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
1381 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Ditto.
1382 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
1383 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1384 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h: Ditto.
1385 * src/atomic_ops_stack.c: Ditto.
1386 * src/atomic_ops_stack.h: Ditto.
1387 * src/atomic_ops/sysdeps/gcc/arm.h: Replace non-ASCII quotes in a
1389 * src/atomic_ops/sysdeps/gcc/mips.h: Use Unix-style EOLn.
1391 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1394 * src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
1395 (regarding memory barrier).
1396 * src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
1397 AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
1398 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
1399 AO_test_and_set): Replace FIXME with the comment saying it is
1400 emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
1401 * src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
1402 using InterlockedCompareExchange() (assuming the latter has a full
1404 * src/atomic_ops/sysdeps/msftc/arm.h: Include
1405 all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
1406 of pre-ARMv6; add the comment.
1408 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1411 * src/atomic_ops/sysdeps/armcc/arm_v6.h
1412 (AO_compare_double_and_swap_double): Replace false/true with 0/1.
1413 * src/atomic_ops/sysdeps/gcc/arm.h
1414 (AO_compare_double_and_swap_double): Ditto.
1415 * src/atomic_ops/sysdeps/gcc/arm.h: Recognize more ARMv6+
1416 predefined macros (6J, 6ZK, 7A, 7M, 7R).
1417 * src/atomic_ops/sysdeps/gcc/arm.h
1418 (AO_compare_double_and_swap_double): Add "cc" clobber to asm.
1419 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_load_acquire):
1420 Correct the name (convert from the lower case).
1421 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_load_acquire):
1423 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_test_and_set,
1424 AO_compare_and_swap): Comment out unimplemented code (and the
1425 corresponding macros); add FIXME.
1426 * src/atomic_ops.c: Recognize AO_USE_WIN32_PTHREADS overriding
1427 _MSC_VER and __MINGW32__ predefined macros (useful for WinCE with
1428 pthreads-w32 library); don't include signal.h, sys/time.h,
1429 sys/select.h in this case; include windows.h instead.
1430 * src/atomic_ops.c (AO_pause): Use Sleep() in case of
1431 AO_USE_WIN32_PTHREADS (instead of select()).
1432 * src/atomic_ops.c (all_sigs, initialized): Don't define in case
1433 of AO_USE_WIN32_PTHREADS.
1434 * src/atomic_ops.c (AO_compare_and_swap_emulation,
1435 AO_compare_double_and_swap_double_emulation): Don't deal with
1436 signals in case of AO_USE_WIN32_PTHREADS.
1438 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1441 * src/atomic_ops/sysdeps/msftc/arm.h: New file (initial support
1443 * src/atomic_ops/sysdeps/msftc/common32_defs.h: New file.
1444 * src/atomic_ops/sysdeps/msftc/arm.h (AO_ASSUME_ARM_ARCH6): New
1446 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1447 (AO_USE_INTERLOCKED_INTRINSICS): Ditto.
1448 * src/atomic_ops/sysdeps/msftc/x86.h: Move "Interlocked"
1449 declarations to common32_defs.h.
1450 * src/atomic_ops/sysdeps/msftc/common32_defs.h
1451 (AO_INTERLOCKED_VOLATILE): New macro defined (used by
1452 Interlocked-based primitives) for compatibility with older VC++.
1453 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Don't include
1454 missing <intrin.h> if WinCE target.
1455 * src/atomic_ops/sysdeps/msftc/x86.h: Include common32_defs.h
1456 (define AO_USE_INTERLOCKED_INTRINSICS unconditionally).
1457 * src/atomic_ops/sysdeps/msftc/x86.h (AO_fetch_and_add_full,
1458 AO_fetch_and_add1_full, AO_fetch_and_sub1_full,
1459 AO_compare_and_swap_full): Move arch-independent primitives to
1461 * src/atomic_ops/sysdeps/msftc/x86.h: Remove comment about i486 or
1462 better CPU (since Interlocked Add and Xchg primitives are available
1464 * src/atomic_ops.h: Include msftc/x86.h even if _M_IX86 is less than
1466 * src/atomic_ops.h: Include msftc/x86.h if "x86" defined (for WinCE
1468 * src/atomic_ops.h: Include msftc/arm.h if ARM target (for WinCE).
1470 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1473 * src/atomic_ops/sysdeps/msftc/x86.h: Fix comments (prefix
1474 ASSUME_WINDOWS98 with "AO_").
1475 * src/atomic_ops/sysdeps/msftc/x86.h: Prefix ASSUME_VISTA macro with
1477 * src/atomic_ops/sysdeps/msftc/x86.h (AO_nop_full): Replace
1478 K&R-style function definition with ANSI C one.
1479 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full):
1480 Replace AO_TS_SET with its value 0xff (some compilers does not like
1481 C enum consts inside inline assembler).
1482 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full): Add
1483 comment about "missing return value" warning.
1484 * src/atomic_ops/sysdeps/msftc/x86.h
1485 (AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE): New macro.
1486 * src/atomic_ops/sysdeps/msftc/x86.h (AO_compare_and_swap_full): Use
1487 _InterlockedCompareExchange() with args and result of PVOID type
1488 if AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE is defined (mostly for
1489 DigitalMars compiler support).
1490 * src/atomic_ops/sysdeps/msftc/x86.h
1491 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1492 variables ("val1" is the lowest part of AO_double_t).
1493 * src/atomic_ops/sysdeps/msftc/x86.h
1494 (AO_compare_double_and_swap_double_full): Rename to
1495 AO_double_compare_and_swap_full (as it has 3 args).
1496 * src/atomic_ops/sysdeps/msftc/x86.h: Replace C++ style comment
1499 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
1502 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove comments about i486
1503 and 32-bit WinChips.
1504 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
1505 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Replace
1506 K&R-style function definition with ANSI C one.
1507 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
1508 * src/atomic_ops/sysdeps/gcc/x86_64.h
1509 (AO_compare_double_and_swap_double_full): Fix comment.
1510 * src/atomic_ops/sysdeps/gcc/x86_64.h
1511 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
1512 variables ("val1" is the lowest part of AO_double_t).
1513 * src/atomic_ops/sysdeps/msftc/x86_64.h
1514 (AO_compare_double_and_swap_double_full): Ditto.
1515 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove comment about
1517 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_ASM_X64_AVAILABLE): New
1519 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1520 "test_and_set_t_is_char.h" if AO_ASM_X64_AVAILABLE (same as in
1521 x86_64.h for gcc); remove FIXME (for re-implement test-and-set).
1522 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
1523 "standard_ao_double_t.h" (same as in x86_64.h for gcc).
1524 * src/atomic_ops/sysdeps/msftc/x86_64.h: Add comment for include
1525 <intrin.h> assuming at least VC++ v8.
1526 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove _Interlocked
1527 prototypes (since they are always declared in intrin.h).
1528 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Move its
1529 definition below CAS primitive (to textually group all asm-based
1530 primitives together).
1531 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_test_and_set_full):
1532 Implement for AO_ASM_X64_AVAILABLE case.
1533 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove AO_CASDOUBLE_MISSING
1534 macro (replaced with AO_ASM_X64_AVAILABLE).
1535 * src/atomic_ops/sysdeps/msftc/x86_64.h
1536 (AO_compare_double_and_swap_double_full): Add intrinsic-based
1537 implementation for VC++ v9+.
1538 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Include
1539 <xmmintrin.h> (and use "__m128" type) if _WIN64.
1540 * src/atomic_ops/sysdeps/standard_ao_double_t.h
1541 (AO_HAVE_DOUBLE_PTR_STORAGE): Define it always (as
1542 "double_ptr_storage" is defined for all cases).
1544 2009-09-09 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1546 * src/atomic_ops/sysdeps/gcc/sparc.h (NO_SPARC_V9):
1547 Renamed to AO_NO_SPARC_V9.
1549 2009-09-01 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
1551 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
1552 AO_TS_VAL_t for "oldval" (for 64-bit support).
1553 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
1554 New function implemented.
1556 2009-08-12 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1557 (diff107_cvs, resembling diff78 and diff88_cvs)
1559 * src/atomic_ops/sysdeps/sunc/x86.h: New file.
1560 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
1561 * src/atomic_ops.h (AO_INLINE): Support inlining for DigitalMars,
1563 * src/atomic_ops.h (AO_compiler_barrier): Use intrinsic-based
1564 implementation for VC++ v8+ (include <intrin.h> before it unless
1565 WinCE target); use asm-based barrier implementation for Borland,
1566 DigitalMars and Watcom.
1567 * src/atomic_ops.h: Fix comment (for x86_64).
1568 * src/atomic_ops.h: Include specialized x86.h and x86_64.h arch
1569 headers for Sun C (if not AO_USE_PTHREAD_DEFS).
1570 * src/atomic_ops.h: Include VC-specific arch headers for Borland,
1571 DigitalMars and Watcom (Win32 target only).
1573 2009-05-27 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
1574 (diff87_cvs, resembling diff29, diff68, diff78 partly)
1576 * doc/README.txt: Remove outdated info about Windows support.
1577 * src/atomic_ops/generalize.h (AO_nop_full): Replace
1578 K&R-style function definition with ANSI C one.
1579 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Ditto.
1580 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_nop_full, AO_nop_write):
1582 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Ditto.
1583 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_nop_full): Ditto.
1584 * src/atomic_ops/sysdeps/gcc/mips.h (AO_nop_full): Ditto.
1585 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_nop_full, AO_lwsync): Ditto.
1586 * src/atomic_ops/sysdeps/gcc/x86.h (AO_nop_full): Ditto.
1587 * src/atomic_ops/sysdeps/generic_pthread.h (AO_nop_full): Ditto.
1588 * src/atomic_ops/sysdeps/hpc/ia64.h (AO_nop_full): Ditto.
1589 * src/atomic_ops/sysdeps/icc/ia64.h (AO_nop_full): Ditto.
1590 * src/atomic_ops/sysdeps/ordered.h (AO_nop_full): Ditto.
1591 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_nop_write): Ditto.
1592 * src/atomic_ops/sysdeps/read_ordered.h (AO_nop_read): Ditto.
1593 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h (AO_TS_val): Fix
1596 2009-02-24 Hans Boehm <Hans.Boehm@hp.com> (Really primarily Earl Chew)
1598 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add index,
1599 update modifiers to asms, refine clobbers to "cr0", use
1600 cr0 instead of cr7, add explicit AO_fetch_and_add,
1601 add UNTESTED 64 bit support.
1603 2008-11-10 Hans Boehm <Hans.Boehm@hp.com> (Really Joerg Wagner)
1605 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Compute
1606 AO_compare_and_swap value differently, add
1607 AO_compare_double_and_swap_double, some indentation fixes.
1608 * src/atomic_ops/sysdeps/gcc/arm.h: Make gcc asm code more
1609 robust and minimize clobbers, Add AO_compare_double_and_swap_double.
1611 2008-11-06 Hans Boehm <Hans.Boehm@hp.com>
1613 * INSTALL: Add some platform-specific documentation.
1614 * src/Makefile.msft: Fix copyright notice.
1616 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1618 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
1619 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
1620 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
1621 * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
1622 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
1623 * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
1624 * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
1625 * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
1626 * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
1627 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
1628 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
1629 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
1630 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix comments.
1631 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
1632 * src/atomic_ops.c: Fix comments.
1633 * src/atomic_ops.h: Fix comments.
1634 * src/atomic_ops_stack.c: Fix comments.
1635 * src/atomic_ops_stack.h: Fix comments.
1637 2008-10-20 Hans Boehm <Hans.Boehm@hp.com> (really Andrew Agno)
1639 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
1642 2008-08-21 Hans Boehm <Hans.Boehm@hp.com>
1644 * config.guess, config.sub, configure: Regenerate/replace.
1645 Use autoconf 2.61, automake 1.9.6.
1647 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Thiemo Seufer)
1649 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz
1652 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Sebastian Siewior)
1654 * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__.
1656 2008-07-24 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
1658 * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h:
1659 Add parentheses around addr arg for various functions.
1661 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1663 * src/atomic_ops/sysdeps/gcc/powerpc.h:
1664 Add const to first parameter of load calls (forgot one).
1666 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
1668 * doc/README.txt, src/atomic_ops/generalize.h,
1669 src/atomic_ops/generalize-small.template,
1670 src/atomic_ops/generalize-small.h,
1671 src/atomic_ops/sysdeps/acquire_release_volatile.h,
1672 src/atomic_ops/sysdeps/char_acquire_release_volatile.h,
1673 src/atomic_ops/sysdeps/int_acquire_release_volatile.h,
1674 src/atomic_ops/sysdeps/short_acquire_release_volatile.h,
1675 src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1676 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1677 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
1678 src/atomic_ops/sysdeps/ao_t_is_int.h,
1679 src/atomic_ops/sysdeps/atomic_load_store.h,
1680 src/atomic_ops/sysdeps/char_atomic_load_store.h,
1681 src/atomic_ops/sysdeps/int_atomic_load_store.h,
1682 src/atomic_ops/sysdeps/short_atomic_load_store.h,
1683 src/atomic_ops/sysdeps/generic_pthread.h,
1684 src/atomic_ops/sysdeps/read_ordered.h,
1685 src/atomic_ops/sysdeps/sysdeps/armcc/arm_v6.h,
1686 src/atomic_ops/sysdeps/gcc/arm.h,
1687 src/atomic_ops/sysdeps/icc/ia64.h,
1688 src/atomic_ops/sysdeps/ibmc/powerpc.h:
1689 Add const to first parameter of load calls.
1691 2008-07-10 Hans Boehm <Hans.Boehm@hp.com>
1693 * src/atomic_ops/sysdeps/gcc/m68k.h: Remove SMP-unsafe
1694 AO_or_full, and let it be autogenerated instead.
1696 2008-07-03 Hans Boehm <Hans.Boehm@hp.com> (Really Thiemo Seufer)
1698 * src/atomic_ops/sysdeps/gcc/mips.h: Really add mips support,
1699 fixing a merge accident.
1701 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1704 * doc/Makefile.in, src/Makefile.in, src/atomic_ops/Makefile.in:
1707 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1710 * src/atomic_ops.h, src/atomic_ops/sysdeps/Makefile.am,
1711 src/atomic_ops/sysdeps/gcc/mips.h: Add mips support.
1712 * src/atomic_ops/sysdeps/gcc/m68k.h: Make test_and_set work
1713 on char, align AO_t. Add cas, or.
1714 * src/atomic_ops/sysdeps/gcc/s390.h: Fix include paths.
1715 * src/atomic_ops/generalize.h: Fix AO_compare_and_swap_double_acquire.
1716 * Makefile.in, aclocal.m4, src/atomic_ops/sysdeps/Makefile.in,
1717 tests/Makefile.in: Regenerate.
1719 2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
1720 (Really Ian Wienand & Debian maintainers)
1722 * src/atomic_ops/sysdeps/gcc/x86.h
1723 (AO_compare_double_and_swap_double_full): Correctly account for
1726 2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
1728 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
1729 double_ptr_storage default to long long; define everywhere.
1731 2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1733 * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
1734 compare_double_and_swap_double.
1736 2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1738 * src/atomic_ops/generalize.h: Add test_and_set generalizations,
1739 Add AO_double_compare_and_swap generalizations.
1740 * src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
1741 * src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
1742 * src/atomic_ops/sysdeps/gcc/x86.h,
1743 src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
1744 compare_double_and_swap_double, commented out for msftc.
1745 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
1746 double_ptr_storage field.
1748 2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
1749 (Merge from separate atomic_ops tree)
1751 * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
1752 double-width cas, and fix its implementation.
1753 * doc/README.txt: Clarify use of _full. Add more warnings about
1756 2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
1758 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1759 %X1 modifier to support indexed addressing.
1761 2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
1763 * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
1766 2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
1768 * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
1771 2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
1773 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1776 2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
1778 * src/atomic_ops.h: include stddef.h
1780 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
1782 * src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
1783 * src/atomic_ops.h: Add test for msftc/x86_64.h.
1784 * src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
1785 * src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
1786 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1787 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1788 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1789 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
1790 Replace unsigned long cast with size_t.
1792 2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
1794 * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
1795 Add cast for return.
1797 2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
1799 * doc/README.txt: Update to reflect C++0x effort.
1801 2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
1803 * src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
1805 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
1808 2006-11-09 Earl Chew (Agilent)
1810 * msftc/x86.h: Follow Microsoft documentation and include
1815 2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
1817 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
1819 2006-03-28 Earl Chew (Agilent)
1821 * src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
1822 * src/atomic_ops/sysdeps/msftc/x86.h:
1823 Use new intrinsics available in MSVC 2003 and MSVC 2005.
1824 Use inline assembler to generate mfence and byte sized xchg
1825 Use correct prototype for InterlockedCompareExchange.
1826 * src/atomic_ops.h: Add test for __PPC__ .
1827 * tests/run_parallel.inc: Add simple VxWorks support.
1828 * tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
1829 to silence compiler warnings.
1831 2006-11-13 Hans Boehm <Hans.Boehm@hp.com>
1833 * src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
1834 * src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
1836 2005-11-04 Hans Boehm <Hans.Boehm@hp.com>
1838 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1839 all_acquire_release_volatile.h, instead of just the pointer-sized
1841 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1842 all_acquire_release_volatile.h and all_atomic_load_store.h,
1843 instead of just the pointer-sized versions.
1847 2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
1849 * src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
1850 * src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
1851 ordered_except_wr.h.
1852 * src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
1853 instead of duplicating it.
1854 * src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
1856 2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
1858 * src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
1859 definition with one that might actually work. (Thanks to Kazu
1860 Hirata and Paul Brook.)
1862 2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
1864 * src/atomic_ops/Makefile.am: Change function naming from "byte" to
1869 2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
1870 Fix various acquire_release_volatile.h files to reflect the fact
1871 that both icc and gcc seem to reorder ordinary memory accesses around
1872 volatile accesses early in the compilation. Modify the acquire
1873 release test to catch this problem (with high probability, and only on
1876 2005-03 Hans Boehm <Hans.Boehm@hp.com>
1877 Fixes for recently introduced bugs. Update x86 and x86-64 assembly
1878 syntax to deal with complaints by some recent gcc versions.
1880 2005-02 Hans Boehm <Hans.Boehm@hp.com>
1881 Added libatomic_ops_gpl library with support for mostly
1882 lock-free stack and malloc().
1884 2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
1885 Hans Boehm <Hans.Boehm@hp.com>
1886 Use autoconf, automake, starting with code from Debian package.
1889 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1890 * test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
1891 Change most platforms to use byte-wide test-and-set locations.
1893 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1894 * ao_t_is_int.h: Add to trivially support int-wide operations
1895 on platforms with int-sized pointers.
1897 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1898 * gcc/powerpc.h: First serious attempt to support PowerPC (with
1899 help from Maged Michael and others).
1901 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1902 * sunc/sparc.[hS]: Added minimal support for the Sun SPARC compiler.
1903 * atomic_ops_sysdeps.S: Add support for platforms that require
1904 out-of-line assembly code.
1906 2004-10 Hans Boehm <Hans.Boehm@hp.com>
1907 More work on char, short, int sized data. Add both
1908 compare_double_and_swap_double and compare_and_swap_double.
1909 Typically each platform will provide at most one of these.
1911 2004-07-02 Ranko Zivojnovic
1912 Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
1914 2004-06 Hans Boehm <Hans.Boehm@hp.com>
1915 Start to add atomic_ops primitives for different sized data.
1917 2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
1919 * atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
1920 Fix support for ecc on IA64. Remove compiler_barrier workaround
1921 for gcc 3.4 and later.
1923 2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
1925 * atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
1926 atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
1927 Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
1928 for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
1929 compiler on PA_RISC and IA64.
1931 2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
1933 * many: Install under "atomic_ops" instead of "ao".
1934 Change atomic_ops include file structure. Auxiliary include
1935 files are all under include/atomic_ops.
1936 Fix (hopefully) "make dist" in atomic_ops distribution.
1937 Renamed various types to end in _t, though the old versions
1938 are still defined for backward compatibility.
1940 2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
1942 * ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
1943 AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
1944 helper macros. AO_test_and_set_full uses helper macros.
1947 Started sometime after version 0.4 release. Currently the format is
1948 informal. Eventually should become more GNU-like.