1 Retired in favor of Git commit log. No longer updated.
4 2011-07-21 Ivan Maidanski <ivmai@mail.ru>
6 * .cvsignore: Don't ignore *.orig and *.rej files (having them
7 ignored turned out to be inconvenient when processing the
10 2011-07-14 Ivan Maidanski <ivmai@mail.ru>
12 * .cvsignore: Add more auto-generated files.
13 * src/.cvsignore: Ditto.
14 * tests/.cvsignore: Ditto.
16 2011-07-14 Ivan Maidanski <ivmai@mail.ru>
18 * tests/list_atomic.template (list_atomicXX): Remove "addr" local
19 variable (use "&val" instead); initialize "newval" and "oldval"
20 local variables; rename "tsaddr" local variable to "ts" one.
21 * tests/list_atomic.template (list_atomicXX): Fix
22 AO_test_and_setXX call (pass address instead of value).
23 * tests/list_atomic.template: Expand all tabs to spaces; remove
24 trailing spaces at EOLn.
25 * tests/run_parallel.inc: Ditto.
26 * tests/test_atomic.c: Ditto.
27 * tests/list_atomic.c: Regenerate.
28 * tests/run_parallel.inc (AO_PTRDIFF_T): New macro.
29 * tests/run_parallel.inc (tramp): Cast between pointer and integer
30 types via casting to AO_PTRDIFF_T.
31 * tests/test_atomic.c (add1sub1_thr, acqrel_thr): Ditto.
32 * tests/run_parallel.inc (run_parallel): Adjust printf format
33 specifiers for DWORD parameters.
34 * tests/test_stack.c: Skip test if no pthreads.
36 2011-06-27 Ivan Maidanski <ivmai@mail.ru> (really Jeremy Huddleston)
38 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
39 Explicitly cast 0xff to unsigned char (otherwise LLVM v2.7 GAS
40 reports an error); don't recognize AO_XCHGB_RET_WORD.
41 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
44 2011-06-15 Ivan Maidanski <ivmai@mail.ru>
46 * configure.ac, README: Change to version 7.2alpha7.
47 * configure: Regenerate.
51 2011-06-14 Ivan Maidanski <ivmai@mail.ru>
53 * configure.ac, README: Change to version 7.2alpha6.
54 * configure: Regenerate.
56 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
58 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_load): Do not
59 define for pre-ARMv6 directly (revert part of the previous
61 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set,
62 AO_test_and_set_full): Refine the comment.
63 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Define
64 SWP-based implementation at the end of file (if none of
65 AO_test_and_set functions are defined previously).
66 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Remove
67 SWP-based implementation (revert part of the previous commit).
68 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store): Remove redundant
69 definition at the file end (revert part of the previous commit).
71 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
73 * src/atomic_ops/sysdeps/gcc/arm.h: Handle ARMv6M architecture.
74 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Force "swp"
75 instruction usage (instead of ldrex/strex) if AO_FORCE_USE_SWP;
77 * src/atomic_ops/sysdeps/gcc/arm.h
78 (AO_compare_double_and_swap_double): Handle ARMv7EM architecture
80 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set, AO_nop_full,
81 AO_load, AO_store): Define at the end of file (in case not defined
84 2011-06-07 Ivan Maidanski <ivmai@mail.ru>
86 * src/atomic_ops/generalize.h: Reformat code.
87 * src/atomic_ops/generalize.h (AO_test_and_set_acquire): Fix
89 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_test_and_set): Ditto.
90 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Ditto.
91 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set): Add
92 a comment (about SWP instruction).
94 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
96 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
97 AO_THUMB_RESTORE_MODE): Use single-digit labels (to workaround
98 a bug in GCC v4.2.1 which reports "garbage following instruction"
100 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Use "IT"
101 instruction only for Thumb-2 mode.
103 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
105 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
106 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define as empty
108 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
109 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
110 AO_compare_and_swap, AO_compare_double_and_swap_double): Remove
111 unnecessary "memory" keyword from the list of clobbered registers
112 (revert part of the previous commit).
113 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Add
114 a comment for "IT" instruction.
115 * src/atomic_ops/sysdeps/gcc/arm.h
116 (AO_compare_double_and_swap_double): Don't define on the
117 architectures where unimplemented; add a comment; replace return
118 (in the loop) statement with break.
120 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
122 * src/atomic_ops/sysdeps/gcc/arm.h (AO_THUMB_GO_ARM,
123 AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS): Define new
124 macro (to switch temporarily CPU mode to ARM in inline assembler
125 if compiling in the Thumb mode and to restore it back on leave).
126 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full, AO_store,
127 AO_test_and_set, AO_fetch_and_add, AO_fetch_and_add1,
128 AO_fetch_and_sub1, AO_compare_and_swap, AO_test_and_set_full):
129 Enable compilation in the Thumb mode (use AO_THUMB_GO_ARM,
130 AO_THUMB_RESTORE_MODE and AO_THUMB_SWITCH_CLOBBERS macros).
131 * src/atomic_ops/sysdeps/gcc/arm.h (AO_store, AO_test_and_set,
132 AO_fetch_and_add, AO_fetch_and_add1, AO_fetch_and_sub1,
133 AO_compare_and_swap, AO_compare_double_and_swap_double): Add
134 "memory" to the list of clobbered registers.
136 2011-06-06 Ivan Maidanski <ivmai@mail.ru>
138 * src/atomic_ops/sysdeps/gcc/arm.h: Reformat code.
139 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
140 AO_test_and_set_full): Add assembler comment containing the
143 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
145 * tests/test_malloc.c (run_one_test): Test AO_malloc() result
146 (if out of memory then print the message and abort).
147 * tests/test_stack.c (add_elements): Ditto.
149 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
151 * src/atomic_ops/generalize.h (AO_HAVE_or_full): Add missing
153 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_HAVE_nop_write):
155 * src/atomic_ops/sysdeps/read_ordered.h (AO_HAVE_nop_read): Ditto.
156 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_store_release):
159 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
161 * src/atomic_ops/generalize-small.template
162 (AO_HAVE_XSIZE_fetch_and_add_full): Add missing definition.
163 * src/atomic_ops/generalize-small.template: Reformat code.
164 * src/atomic_ops/generalize-small.h: Regenerate.
166 2011-06-03 Ivan Maidanski <ivmai@mail.ru>
168 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Remove
169 blank line between AO_func and AO_HAVE_func definitions.
170 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
171 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
172 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
173 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
174 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
175 * src/atomic_ops/sysdeps/ordered.h: Ditto.
176 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
177 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
178 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
179 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
180 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
181 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
182 * src/atomic_ops/sysdeps/gcc/cris.h: Ditto.
183 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
184 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
185 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
186 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
187 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
188 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
189 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
190 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
191 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
192 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
193 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
194 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
195 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
196 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
197 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
198 * src/atomic_ops/sysdeps/sunc/sparc.h: Ditto.
199 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
200 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
201 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Reformat
203 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
204 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
205 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
206 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
207 * src/atomic_ops/sysdeps/ordered.h: Ditto.
208 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
209 * src/atomic_ops/sysdeps/test_and_set_t_is_char.h: Remove file
211 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Don't
213 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire,
214 AO_test_and_set, AO_compare_and_swap): Merge adjacent definitions.
215 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_store_release):
217 * src/atomic_ops/sysdeps/sunc/sparc.h: Expand all tabs to spaces;
218 remove trailing spaces at EOLn.
220 2011-06-02 Ivan Maidanski <ivmai@mail.ru>
222 * tests/test_malloc.c (main): Remove unused "exper_n" local
224 * tests/test_stack.c (run_one_test): Remove unused "aux" local
227 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
229 * src/atomic_ops/sysdeps/gcc/arm.h
230 (AO_compare_double_and_swap_double,
231 AO_HAVE_compare_double_and_swap_double): Define only starting from
233 * src/atomic_ops/sysdeps/gcc/arm.h
234 (AO_compare_double_and_swap_double): Fix function name in
235 assembler code; replace while (1) loop with "do-while".
237 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
239 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full):
240 Specify "%b0" (instead of "%0") in "xchg" instruction (to
241 workaround a bug in Sun C 5.11).
242 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
245 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
247 * src/atomic_ops_malloc.c (AO_malloc_enable_mmap): Workaround for
248 Sun C compiler (call "release" variant of AO_store).
250 2011-06-01 Ivan Maidanski <ivmai@mail.ru>
252 * configure.ac (_PTHREADS): New template (used for NetBSD).
253 * configure.ac (THREADDLLIBS): New macro.
254 * tests/Makefile.am (test_atomic_LDADD, test_stack_LDADD,
255 test_atomic_pthreads_LDADD, test_malloc_LDADD): Use THREADDLLIBS
256 instead of "-lpthread".
257 * configure: Regenerate.
258 * Makefile.in: Ditto.
259 * doc/Makefile.in: Ditto.
260 * src/Makefile.in: Ditto.
261 * src/atomic_ops/Makefile.in: Ditto.
262 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
263 * src/config.h.in: Ditto.
264 * tests/Makefile.in: Ditto.
266 2011-05-30 Ivan Maidanski <ivmai@mail.ru>
268 * configure.ac (PIC): Add workaround for GCC v3.4.6 which does not
269 define the corresponding macro.
270 * configure.ac: Don't check for GCC twice.
271 * configure: Regenerate.
272 * tests/test_malloc.c (DEFAULT_NTHREADS): New macro.
273 * tests/test_malloc.c (run_one_test): Refine printed message (in
275 * tests/test_malloc.c (main): Use DEFAULT_NTHREADS.
276 * tests/test_stack.c (main): Cast AO_stack_pop() returned pointer.
277 * src/atomic_ops_malloc.c (USE_MMAP_ANON, GC_MMAP_FLAGS,
278 OPT_MAP_ANON): New macro.
279 * src/atomic_ops_malloc.c (get_mmaped): Pass -1 (instead of 0) as
280 file descriptor to mmap() if MAP_ANONYMOUS (same as for MAP_ANON).
281 * src/atomic_ops_malloc.c (get_mmaped): Use USE_MMAP_ANON,
282 GC_MMAP_FLAGS and OPT_MAP_ANON macros; reformat code; check open()
285 2011-05-11 Ivan Maidanski <ivmai@mail.ru>
287 * tests/test_malloc.c: Expand all tabs to spaces; remove trailing
289 * tests/test_malloc.c (LENGTH, LARGE): Rename to LIST_LENGTH and
290 LARGE_OBJ_SIZE, respectively.
291 * tests/test_malloc.c (MAX_NTHREADS, N_REVERSALS, LIST_LENGTH,
292 LARGE_OBJ_SIZE): Do not define unless undefined.
293 * tests/test_malloc.c (run_one_test): Recognize DEBUG_RUN_ONE_TEST
296 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
298 * tests/Makefile.am (EXTRA_DIST): Add list_atomic.c; update
300 * tests/Makefile.am (CLEANFILES): Remove test_atomic_include.h,
302 * tests/Makefile.am: Remove trailing spaces at EOLn.
303 * tests/Makefile.in: Regenerate.
305 2011-05-10 Ivan Maidanski <ivmai@mail.ru>
307 * tests/test_stack.c (MAX_NTHREADS, N_EXPERIMENTS): Do not define
309 * tests/test_stack.c: Expand all tabs to spaces.
310 * tests/test_atomic_include.h: Ditto.
311 * tests/test_stack.c (main): Free pop'ed elements.
312 * tests/test_atomic_include.h (test_atomic, test_atomic_release,
313 test_atomic_acquire, test_atomic_read, test_atomic_write,
314 test_atomic_full, test_atomic_release_write,
315 test_atomic_acquire_read): Remove prototype.
317 2011-04-22 Ivan Maidanski <ivmai@mail.ru>
319 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_MASK): Add "volatile" for
320 asm; remove redundant trailing ';'.
322 2011-04-11 Ivan Maidanski <ivmai@mail.ru> (really Jim Meyering)
324 * doc/README.txt: Remove doubled words in comments.
326 2011-03-18 Ivan Maidanski <ivmai@mail.ru>
328 * src/atomic_ops/sysdeps/gcc/arm.h: Test for all the known pre-v6
329 ARM chips instead of all the currently existing v6+ ones.
331 2011-03-13 Ivan Maidanski <ivmai@mail.ru>
333 * src/atomic_ops/sysdeps/emul_cas.h: Fix a typo in a comment;
334 expand all tabs to spaces.
335 * src/atomic_ops/sysdeps/gcc/x86.h (AO_test_and_set_full):
336 Recognize AO_XCHGB_RET_WORD new macro (to workaround a bug).
337 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_test_and_set_full):
340 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
342 * src/atomic_ops.c: Include sys/time.h (to get timespec) for NaCl.
343 * src/atomic_ops_malloc.c (msb): Do the shift by 32 only once (in
344 a conditional expression) to prevent a compiler warning.
345 * src/atomic_ops_malloc.c: Expand all tabs to spaces; remove
346 trailing spaces at EOLn.
348 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
350 * src/atomic_ops.c: Explicitly define AO_USE_NO_SIGNALS and
351 AO_USE_NANOSLEEP for NaCl.
353 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
355 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
356 automake-1.11.1 and libtool-2.4).
359 2011-02-09 Ivan Maidanski <ivmai@mail.ru>
361 * src/atomic_ops.c (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): New
363 * src/atomic_ops.c (AO_USE_WIN32_PTHREADS): Imply
365 * src/atomic_ops.c: Don't include signal.h if AO_USE_NO_SIGNALS.
366 * src/atomic_ops.c: Include time.h if AO_USE_NANOSLEEP.
367 * src/atomic_ops.c (AO_locks, AO_pause): Reformat the code.
368 * src/atomic_ops.c (AO_pause): Use nanosleep() if
370 * src/atomic_ops.c (all_sigs, initialized,
371 AO_compare_and_swap_emulation,
372 AO_compare_double_and_swap_double_emulation): Use
373 AO_USE_NO_SIGNALS instead of AO_USE_WIN32_PTHREADS.
375 2011-01-07 Ivan Maidanski <ivmai@mail.ru>
377 * src/.cvsignore: Add more auto-generated files.
378 * tests/.cvsignore: Ditto.
379 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full, AO_store,
380 AO_compare_double_and_swap_double): Reformat code.
381 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
382 AO_compare_double_and_swap_double): Ditto.
383 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
384 Produce "it eq" instruction only for Thumb mode.
385 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
387 2010-11-23 Ivan Maidanski <ivmai@mail.ru> (really Michael Hope)
389 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
390 Insert "it eq" just before "strexeq" (required for Thumb-2 mode,
391 ignored in ARM mode).
392 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
394 2010-09-15 Ivan Maidanski <ivmai@mail.ru> (with input from Gregory Farnum)
396 * src/atomic_ops.h: Include armcc/arm_v6.h if __ARMCC__.
397 * src/atomic_ops.h: Include ibmc/powerpc.h if __IBMC__.
398 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if msftc/arm.h is
400 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if AO_CAN_EMUL_CAS
401 is defined but emul_cas.h has not been included.
402 * src/atomic_ops/sysdeps/gcc/arm.h: Fix a typo.
404 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
406 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
407 automake-1.11.1 and libtool-2.2.8).
410 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
412 * src/atomic_ops/sysdeps/gcc/arm.h: Replace C++ style comment
415 2010-05-30 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
417 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Use
418 "register long" (instead of "int") for "ret" variable.
419 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Replace
420 with AO_test_and_set_full (same for AO_HAVE_test_and_set).
421 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_compare_and_swap_full):
422 New function implemented.
424 2010-05-22 Ivan Maidanski <ivmai@mail.ru>
426 * src/atomic_ops/sysdeps/Makefile.am (nobase_sysdep_HEADERS):
428 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
430 2010-05-21 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
432 * src/atomic_ops.h: Recognize __avr32__ (include gcc/avr32.h).
433 * src/atomic_ops/sysdeps/gcc/avr32.h: New file.
435 2010-04-29 Ivan Maidanski <ivmai@mail.ru>
437 * doc/README_malloc.txt: Fix a typo.
438 * doc/README_stack.txt: Ditto.
440 2010-02-25 Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
442 * .cvsignore: New file.
443 * doc/.cvsignore: Ditto.
444 * src/.cvsignore: Ditto.
445 * src/atomic_ops/.cvsignore: Ditto.
446 * src/atomic_ops/sysdeps/.cvsignore: Ditto.
447 * tests/.cvsignore: Ditto.
449 2010-02-19 Ivan Maidanski <ivmai@mail.ru> (mostly really Patrick Marlier)
451 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full):
452 Use __sync_bool_compare_and_swap() if AO_USE_SYNC_CAS_BUILTIN.
453 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
455 * src/atomic_ops.h (AO_USE_SYNC_CAS_BUILTIN): New macro defined
456 if GCC v4.2+ or Intel compiler v11.1+ (only for amd64).
457 * src/atomic_ops.h: Include GCC-specific sysdeps files for Intel
458 compiler in GCC compatible mode (only for x86 and amd64).
460 2010-02-18 Ivan Maidanski <ivmai@mail.ru>
462 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Don't check
463 for AO_USE_PENTIUM4_INSTRS (since "mfence" (SSE2) is supported on
464 all x86_64/amd64 chips); remove the comment.
465 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
466 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Define only
467 if AO_ASM_X64_AVAILABLE.
468 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
469 Use built-in __sync_bool_compare_and_swap() if GCC v4.2+.
471 2010-02-17 Ivan Maidanski <ivmai@mail.ru> (really Patrick Marlier)
473 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full,
474 AO_compare_double_and_swap_double_full): Use EAX for the result
475 since cmpxchg clobbers it.
476 * src/atomic_ops/sysdeps/sunc/x86.h (AO_compare_and_swap_full,
477 AO_compare_double_and_swap_double_full): Ditto.
478 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full,
479 AO_compare_double_and_swap_double_full): Ditto.
480 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_compare_and_swap_full,
481 AO_compare_double_and_swap_double_full): Ditto.
483 2010-02-04 Ivan Maidanski <ivmai@mail.ru>
485 * doc/Makefile.in: Regenerate.
487 2010-02-04 Ivan Maidanski <ivmai@mail.ru> (really Ian Wienand)
489 * doc/Makefile.am: Remove duplicate file in the list.
491 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
493 * ChangeLog: Fix some typos.
495 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
497 * src/atomic_ops_stack.c (AO_stack_push_explicit_aux_release):
498 Define "i" variable only if used (to suppress a compiler warning).
500 2010-02-02 Ivan Maidanski <ivmai@mail.ru>
502 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full): Fix
503 "xchg" data size (remove "l" suffix).
504 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
506 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full): Use
508 * src/atomic_ops/sysdeps/sunc/x86.h
509 (AO_compare_double_and_swap_double_full,
510 AO_HAVE_compare_double_and_swap_double_full): Comment out (since
511 not tested, might be wrong, and tickles a bug in some Sun CC
512 versions; besides, __PIC__ macro is never predefined by Sun CC).
514 2010-01-29 Ivan Maidanski <ivmai@mail.ru>
516 * INSTALL: Regenerate (by autoreconf -vif using libtool-2.2.6b,
517 automake-1.11.1, autoconf-2.65).
518 * Makefile.in: Ditto.
521 * config.guess: Ditto.
527 * mkinstalldirs: Ditto.
528 * doc/Makefile.in: Ditto.
529 * src/Makefile.in: Ditto.
530 * src/atomic_ops/Makefile.in: Ditto.
531 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
532 * src/config.h.in: Ditto.
533 * tests/Makefile.in: Ditto.
535 2009-12-19 Ivan Maidanski <ivmai@mail.ru>
537 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_lwsync): Redirect to
538 AO_sync() if __NO_LWSYNC__ (same as for gcc/powerpc.h).
540 2009-12-17 Ivan Maidanski <ivmai@mail.ru> (really Emmanuel Stapf)
542 * src/atomic_ops.h: Recognize _M_X64 (as an alias for _AMD64_).
544 2009-12-04 Ivan Maidanski <ivmai@mail.ru>
546 * configure.ac, README: Change to version 7.2alpha5.
547 * configure: Regenerate.
551 2009-12-02 Ivan Maidanski <ivmai@mail.ru>
553 * configure.ac, README: Change to version 7.2alpha4.
554 * configure: Regenerate.
556 2009-12-01 Ivan Maidanski <ivmai@mail.ru>
558 * configure.ac, README: Change to version 1.3alpha1.
559 * configure: Regenerate.
561 2009-11-21 Ivan Maidanski <ivmai@mail.ru> (really Daniel R. Grayson)
563 * configure.ac (AC_CONFIG_COMMANDS): Quote PICFLAG, CC, DEFS
565 * configure: Regenerate.
567 2009-10-06 Ivan Maidanski <ivmai@mail.ru>
569 * src/atomic_ops/sysdeps/gcc/sh.h: Remove commented out AO_TS_SET
572 2009-10-05 Ivan Maidanski <ivmai@mail.ru>
574 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
576 2009-10-05 Ivan Maidanski <ivmai@mail.ru> (really Takashi YOSHII)
578 * src/atomic_ops/sysdeps/gcc/sh.h: New file.
579 * src/atomic_ops.h: Include gcc/sh.h if __arm__.
580 * src/atomic_ops/sysdeps/Makefile.am: Add gcc/sh.h entry.
582 2009-10-02 Ivan Maidanski <ivmai@mail.ru>
584 * src/atomic_ops/sysdeps/Makefile.am: Add armcc/arm_v6.h,
585 msftc/arm.h, msftc/common32_defs.h, sunc/x86.h sunc/x86_64.h
586 entries; order all entries alphabetically.
587 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
589 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
591 * aclocal.m4: Regenerate (by autoreconf -vif using libtool-2.2,
592 automake-1.10.2, autoconf-2.64).
594 * Makefile.in: Ditto.
596 * config.guess: Ditto.
602 * mkinstalldirs: Ditto.
603 * doc/Makefile.in: Ditto.
604 * src/config.h.in: Ditto.
605 * src/Makefile.in: Ditto.
606 * src/atomic_ops/Makefile.in: Ditto.
607 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
608 * tests/Makefile.in: Ditto.
610 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
612 * src/atomic_ops/sysdeps/gcc/x86.h: Remove spaces preceding '#'
613 for the preprocessor directives.
614 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
616 2009-09-30 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
618 * README: Move notes from the hand-edited part of INSTALL which
619 was overwritten by Automake recently.
621 2009-09-26 Ivan Maidanski <ivmai@mail.ru>
623 * aclocal.m4: Regenerate (by autoreconf -vif).
624 * config.guess: Ditto.
628 * Makefile.in: Ditto.
629 * doc/Makefile.in: Ditto.
630 * src/config.h.in: Ditto.
631 * src/Makefile.in: Ditto.
632 * src/atomic_ops/Makefile.in: Ditto.
633 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
634 * tests/Makefile.in: Ditto.
636 2009-09-25 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
638 * configure.ac: Replace AC_PROG_CC with AM_PROG_CC_C_O.
640 2009-09-16 Ivan Maidanski <ivmai@mail.ru>
642 * ChangeLog: Remove trailing spaces at EOLn.
643 * doc/README.txt: Expand all tabs to spaces; remove trailing
644 spaces at EOLn; remove multiple trailing blank lines.
645 * src/atomic_ops.c: Ditto.
646 * src/atomic_ops.h: Ditto.
647 * src/atomic_ops/generalize-small.h: Ditto.
648 * src/atomic_ops/generalize.h: Ditto.
649 * src/atomic_ops/sysdeps/acquire_release_volatile.h: Ditto.
650 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Ditto.
651 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Ditto.
652 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Ditto.
653 * src/atomic_ops/sysdeps/ao_t_is_int.h: Ditto.
654 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Ditto.
655 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
656 * src/atomic_ops/sysdeps/char_acquire_release_volatile.h: Ditto.
657 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
658 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
659 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
660 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
661 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
662 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
663 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
664 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
665 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
666 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
667 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
668 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
669 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
670 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
671 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
672 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
673 * src/atomic_ops/sysdeps/icc/ia64.h: Ditto.
674 * src/atomic_ops/sysdeps/int_acquire_release_volatile.h: Ditto.
675 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
676 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
677 * src/atomic_ops/sysdeps/msftc/arm.h: Ditto.
678 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
679 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
680 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
681 * src/atomic_ops/sysdeps/ordered.h: Ditto.
682 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
683 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
684 * src/atomic_ops/sysdeps/short_acquire_release_volatile.h: Ditto.
685 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
686 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
687 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Ditto.
688 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
689 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
690 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h: Ditto.
691 * src/atomic_ops_stack.c: Ditto.
692 * src/atomic_ops_stack.h: Ditto.
693 * src/atomic_ops/sysdeps/gcc/arm.h: Replace non-ASCII quotes in a
695 * src/atomic_ops/sysdeps/gcc/mips.h: Use Unix-style EOLn.
697 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
700 * src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
701 (regarding memory barrier).
702 * src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
703 AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
704 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
705 AO_test_and_set): Replace FIXME with the comment saying it is
706 emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
707 * src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
708 using InterlockedCompareExchange() (assuming the latter has a full
710 * src/atomic_ops/sysdeps/msftc/arm.h: Include
711 all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
712 of pre-ARMv6; add the comment.
714 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
717 * src/atomic_ops/sysdeps/armcc/arm_v6.h
718 (AO_compare_double_and_swap_double): Replace false/true with 0/1.
719 * src/atomic_ops/sysdeps/gcc/arm.h
720 (AO_compare_double_and_swap_double): Ditto.
721 * src/atomic_ops/sysdeps/gcc/arm.h: Recognize more ARMv6+
722 predefined macros (6J, 6ZK, 7A, 7M, 7R).
723 * src/atomic_ops/sysdeps/gcc/arm.h
724 (AO_compare_double_and_swap_double): Add "cc" clobber to asm.
725 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_load_acquire):
726 Correct the name (convert from the lower case).
727 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_load_acquire):
729 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_test_and_set,
730 AO_compare_and_swap): Comment out unimplemented code (and the
731 corresponding macros); add FIXME.
732 * src/atomic_ops.c: Recognize AO_USE_WIN32_PTHREADS overriding
733 _MSC_VER and __MINGW32__ predefined macros (useful for WinCE with
734 pthreads-w32 library); don't include signal.h, sys/time.h,
735 sys/select.h in this case; include windows.h instead.
736 * src/atomic_ops.c (AO_pause): Use Sleep() in case of
737 AO_USE_WIN32_PTHREADS (instead of select()).
738 * src/atomic_ops.c (all_sigs, initialized): Don't define in case
739 of AO_USE_WIN32_PTHREADS.
740 * src/atomic_ops.c (AO_compare_and_swap_emulation,
741 AO_compare_double_and_swap_double_emulation): Don't deal with
742 signals in case of AO_USE_WIN32_PTHREADS.
744 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
747 * src/atomic_ops/sysdeps/msftc/arm.h: New file (initial support
749 * src/atomic_ops/sysdeps/msftc/common32_defs.h: New file.
750 * src/atomic_ops/sysdeps/msftc/arm.h (AO_ASSUME_ARM_ARCH6): New
752 * src/atomic_ops/sysdeps/msftc/common32_defs.h
753 (AO_USE_INTERLOCKED_INTRINSICS): Ditto.
754 * src/atomic_ops/sysdeps/msftc/x86.h: Move "Interlocked"
755 declarations to common32_defs.h.
756 * src/atomic_ops/sysdeps/msftc/common32_defs.h
757 (AO_INTERLOCKED_VOLATILE): New macro defined (used by
758 Interlocked-based primitives) for compatibility with older VC++.
759 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Don't include
760 missing <intrin.h> if WinCE target.
761 * src/atomic_ops/sysdeps/msftc/x86.h: Include common32_defs.h
762 (define AO_USE_INTERLOCKED_INTRINSICS unconditionally).
763 * src/atomic_ops/sysdeps/msftc/x86.h (AO_fetch_and_add_full,
764 AO_fetch_and_add1_full, AO_fetch_and_sub1_full,
765 AO_compare_and_swap_full): Move arch-independent primitives to
767 * src/atomic_ops/sysdeps/msftc/x86.h: Remove comment about i486 or
768 better CPU (since Interlocked Add and Xchg primitives are available
770 * src/atomic_ops.h: Include msftc/x86.h even if _M_IX86 is less than
772 * src/atomic_ops.h: Include msftc/x86.h if "x86" defined (for WinCE
774 * src/atomic_ops.h: Include msftc/arm.h if ARM target (for WinCE).
776 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
779 * src/atomic_ops/sysdeps/msftc/x86.h: Fix comments (prefix
780 ASSUME_WINDOWS98 with "AO_").
781 * src/atomic_ops/sysdeps/msftc/x86.h: Prefix ASSUME_VISTA macro with
783 * src/atomic_ops/sysdeps/msftc/x86.h (AO_nop_full): Replace
784 K&R-style function definition with ANSI C one.
785 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full):
786 Replace AO_TS_SET with its value 0xff (some compilers does not like
787 C enum consts inside inline assembler).
788 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full): Add
789 comment about "missing return value" warning.
790 * src/atomic_ops/sysdeps/msftc/x86.h
791 (AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE): New macro.
792 * src/atomic_ops/sysdeps/msftc/x86.h (AO_compare_and_swap_full): Use
793 _InterlockedCompareExchange() with args and result of PVOID type
794 if AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE is defined (mostly for
795 DigitalMars compiler support).
796 * src/atomic_ops/sysdeps/msftc/x86.h
797 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
798 variables ("val1" is the lowest part of AO_double_t).
799 * src/atomic_ops/sysdeps/msftc/x86.h
800 (AO_compare_double_and_swap_double_full): Rename to
801 AO_double_compare_and_swap_full (as it has 3 args).
802 * src/atomic_ops/sysdeps/msftc/x86.h: Replace C++ style comment
805 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
808 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove comments about i486
810 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
811 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Replace
812 K&R-style function definition with ANSI C one.
813 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
814 * src/atomic_ops/sysdeps/gcc/x86_64.h
815 (AO_compare_double_and_swap_double_full): Fix comment.
816 * src/atomic_ops/sysdeps/gcc/x86_64.h
817 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
818 variables ("val1" is the lowest part of AO_double_t).
819 * src/atomic_ops/sysdeps/msftc/x86_64.h
820 (AO_compare_double_and_swap_double_full): Ditto.
821 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove comment about
823 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_ASM_X64_AVAILABLE): New
825 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
826 "test_and_set_t_is_char.h" if AO_ASM_X64_AVAILABLE (same as in
827 x86_64.h for gcc); remove FIXME (for re-implement test-and-set).
828 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
829 "standard_ao_double_t.h" (same as in x86_64.h for gcc).
830 * src/atomic_ops/sysdeps/msftc/x86_64.h: Add comment for include
831 <intrin.h> assuming at least VC++ v8.
832 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove _Interlocked
833 prototypes (since they are always declared in intrin.h).
834 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Move its
835 definition below CAS primitive (to textually group all asm-based
836 primitives together).
837 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_test_and_set_full):
838 Implement for AO_ASM_X64_AVAILABLE case.
839 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove AO_CASDOUBLE_MISSING
840 macro (replaced with AO_ASM_X64_AVAILABLE).
841 * src/atomic_ops/sysdeps/msftc/x86_64.h
842 (AO_compare_double_and_swap_double_full): Add intrinsic-based
843 implementation for VC++ v9+.
844 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Include
845 <xmmintrin.h> (and use "__m128" type) if _WIN64.
846 * src/atomic_ops/sysdeps/standard_ao_double_t.h
847 (AO_HAVE_DOUBLE_PTR_STORAGE): Define it always (as
848 "double_ptr_storage" is defined for all cases).
850 2009-09-09 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
852 * src/atomic_ops/sysdeps/gcc/sparc.h (NO_SPARC_V9):
853 Renamed to AO_NO_SPARC_V9.
855 2009-09-01 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
857 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
858 AO_TS_VAL_t for "oldval" (for 64-bit support).
859 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
860 New function implemented.
862 2009-08-12 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
863 (diff107_cvs, resembling diff78 and diff88_cvs)
865 * src/atomic_ops/sysdeps/sunc/x86.h: New file.
866 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
867 * src/atomic_ops.h (AO_INLINE): Support inlining for DigitalMars,
869 * src/atomic_ops.h (AO_compiler_barrier): Use intrinsic-based
870 implementation for VC++ v8+ (include <intrin.h> before it unless
871 WinCE target); use asm-based barrier implementation for Borland,
872 DigitalMars and Watcom.
873 * src/atomic_ops.h: Fix comment (for x86_64).
874 * src/atomic_ops.h: Include specialized x86.h and x86_64.h arch
875 headers for Sun C (if not AO_USE_PTHREAD_DEFS).
876 * src/atomic_ops.h: Include VC-specific arch headers for Borland,
877 DigitalMars and Watcom (Win32 target only).
879 2009-05-27 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
880 (diff87_cvs, resembling diff29, diff68, diff78 partly)
882 * doc/README.txt: Remove outdated info about Windows support.
883 * src/atomic_ops/generalize.h (AO_nop_full): Replace
884 K&R-style function definition with ANSI C one.
885 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Ditto.
886 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_nop_full, AO_nop_write):
888 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Ditto.
889 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_nop_full): Ditto.
890 * src/atomic_ops/sysdeps/gcc/mips.h (AO_nop_full): Ditto.
891 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_nop_full, AO_lwsync): Ditto.
892 * src/atomic_ops/sysdeps/gcc/x86.h (AO_nop_full): Ditto.
893 * src/atomic_ops/sysdeps/generic_pthread.h (AO_nop_full): Ditto.
894 * src/atomic_ops/sysdeps/hpc/ia64.h (AO_nop_full): Ditto.
895 * src/atomic_ops/sysdeps/icc/ia64.h (AO_nop_full): Ditto.
896 * src/atomic_ops/sysdeps/ordered.h (AO_nop_full): Ditto.
897 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_nop_write): Ditto.
898 * src/atomic_ops/sysdeps/read_ordered.h (AO_nop_read): Ditto.
899 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h (AO_TS_val): Fix
902 2009-02-24 Hans Boehm <Hans.Boehm@hp.com> (Really primarily Earl Chew)
904 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add index,
905 update modifiers to asms, refine clobbers to "cr0", use
906 cr0 instead of cr7, add explicit AO_fetch_and_add,
907 add UNTESTED 64 bit support.
909 2008-11-10 Hans Boehm <Hans.Boehm@hp.com> (Really Joerg Wagner)
911 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Compute
912 AO_compare_and_swap value differently, add
913 AO_compare_double_and_swap_double, some indentation fixes.
914 * src/atomic_ops/sysdeps/gcc/arm.h: Make gcc asm code more
915 robust and minimize clobbers, Add AO_compare_double_and_swap_double.
917 2008-11-06 Hans Boehm <Hans.Boehm@hp.com>
919 * INSTALL: Add some platform-specific documentation.
920 * src/Makefile.msft: Fix copyright notice.
922 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
924 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
925 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
926 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
927 * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
928 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
929 * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
930 * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
931 * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
932 * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
933 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
934 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
935 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
936 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix comments.
937 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
938 * src/atomic_ops.c: Fix comments.
939 * src/atomic_ops.h: Fix comments.
940 * src/atomic_ops_stack.c: Fix comments.
941 * src/atomic_ops_stack.h: Fix comments.
943 2008-10-20 Hans Boehm <Hans.Boehm@hp.com> (really Andrew Agno)
945 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
948 2008-08-21 Hans Boehm <Hans.Boehm@hp.com>
950 * config.guess, config.sub, configure: Regenerate/replace.
951 Use autoconf 2.61, automake 1.9.6.
953 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Thiemo Seufer)
955 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz
958 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Sebastian Siewior)
960 * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__.
962 2008-07-24 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
964 * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h:
965 Add parentheses around addr arg for various functions.
967 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
969 * src/atomic_ops/sysdeps/gcc/powerpc.h:
970 Add const to first parameter of load calls (forgot one).
972 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
974 * doc/README.txt, src/atomic_ops/generalize.h,
975 src/atomic_ops/generalize-small.template,
976 src/atomic_ops/generalize-small.h,
977 src/atomic_ops/sysdeps/acquire_release_volatile.h,
978 src/atomic_ops/sysdeps/char_acquire_release_volatile.h,
979 src/atomic_ops/sysdeps/int_acquire_release_volatile.h,
980 src/atomic_ops/sysdeps/short_acquire_release_volatile.h,
981 src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
982 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
983 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
984 src/atomic_ops/sysdeps/ao_t_is_int.h,
985 src/atomic_ops/sysdeps/atomic_load_store.h,
986 src/atomic_ops/sysdeps/char_atomic_load_store.h,
987 src/atomic_ops/sysdeps/int_atomic_load_store.h,
988 src/atomic_ops/sysdeps/short_atomic_load_store.h,
989 src/atomic_ops/sysdeps/generic_pthread.h,
990 src/atomic_ops/sysdeps/read_ordered.h,
991 src/atomic_ops/sysdeps/sysdeps/armcc/arm_v6.h,
992 src/atomic_ops/sysdeps/gcc/arm.h,
993 src/atomic_ops/sysdeps/icc/ia64.h,
994 src/atomic_ops/sysdeps/ibmc/powerpc.h:
995 Add const to first parameter of load calls.
997 2008-07-10 Hans Boehm <Hans.Boehm@hp.com>
999 * src/atomic_ops/sysdeps/gcc/m68k.h: Remove SMP-unsafe
1000 AO_or_full, and let it be autogenerated instead.
1002 2008-07-03 Hans Boehm <Hans.Boehm@hp.com> (Really Thiemo Seufer)
1004 * src/atomic_ops/sysdeps/gcc/mips.h: Really add mips support,
1005 fixing a merge accident.
1007 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1010 * doc/Makefile.in, src/Makefile.in, src/atomic_ops/Makefile.in:
1013 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
1016 * src/atomic_ops.h, src/atomic_ops/sysdeps/Makefile.am,
1017 src/atomic_ops/sysdeps/gcc/mips.h: Add mips support.
1018 * src/atomic_ops/sysdeps/gcc/m68k.h: Make test_and_set work
1019 on char, align AO_t. Add cas, or.
1020 * src/atomic_ops/sysdeps/gcc/s390.h: Fix include paths.
1021 * src/atomic_ops/generalize.h: Fix AO_compare_and_swap_double_acquire.
1022 * Makefile.in, aclocal.m4, src/atomic_ops/sysdeps/Makefile.in,
1023 tests/Makefile.in: Regenerate.
1025 2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
1026 (Really Ian Wienand & Debian maintainers)
1028 * src/atomic_ops/sysdeps/gcc/x86.h
1029 (AO_compare_double_and_swap_double_full): Correctly account for
1032 2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
1034 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
1035 double_ptr_storage default to long long; define everywhere.
1037 2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1039 * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
1040 compare_double_and_swap_double.
1042 2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
1044 * src/atomic_ops/generalize.h: Add test_and_set generalizations,
1045 Add AO_double_compare_and_swap generalizations.
1046 * src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
1047 * src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
1048 * src/atomic_ops/sysdeps/gcc/x86.h,
1049 src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
1050 compare_double_and_swap_double, commented out for msftc.
1051 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
1052 double_ptr_storage field.
1054 2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
1055 (Merge from separate atomic_ops tree)
1057 * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
1058 double-width cas, and fix its implementation.
1059 * doc/README.txt: Clarify use of _full. Add more warnings about
1062 2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
1064 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1065 %X1 modifier to support indexed addressing.
1067 2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
1069 * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
1072 2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
1074 * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
1077 2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
1079 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
1082 2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
1084 * src/atomic_ops.h: include stddef.h
1086 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
1088 * src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
1089 * src/atomic_ops.h: Add test for msftc/x86_64.h.
1090 * src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
1091 * src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
1092 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
1093 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
1094 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
1095 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
1096 Replace unsigned long cast with size_t.
1098 2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
1100 * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
1101 Add cast for return.
1103 2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
1105 * doc/README.txt: Update to reflect C++0x effort.
1107 2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
1109 * src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
1111 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
1114 2006-11-09 Earl Chew (Agilent)
1116 * msftc/x86.h: Follow Microsoft documentation and include
1121 2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
1123 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
1125 2006-03-28 Earl Chew (Agilent)
1127 * src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
1128 * src/atomic_ops/sysdeps/msftc/x86.h:
1129 Use new intrinsics available in MSVC 2003 and MSVC 2005.
1130 Use inline assembler to generate mfence and byte sized xchg
1131 Use correct prototype for InterlockedCompareExchange.
1132 * src/atomic_ops.h: Add test for __PPC__ .
1133 * tests/run_parallel.inc: Add simple VxWorks support.
1134 * tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
1135 to silence compiler warnings.
1137 2006-11-13 Hans Boehm <Hans.Boehm@hp.com>
1139 * src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
1140 * src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
1142 2005-11-04 Hans Boehm <Hans.Boehm@hp.com>
1144 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1145 all_acquire_release_volatile.h, instead of just the pointer-sized
1147 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
1148 all_acquire_release_volatile.h and all_atomic_load_store.h,
1149 instead of just the pointer-sized versions.
1153 2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
1155 * src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
1156 * src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
1157 ordered_except_wr.h.
1158 * src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
1159 instead of duplicating it.
1160 * src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
1162 2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
1164 * src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
1165 definition with one that might actually work. (Thanks to Kazu
1166 Hirata and Paul Brook.)
1168 2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
1170 * src/atomic_ops/Makefile.am: Change function naming from "byte" to
1175 2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
1176 Fix various acquire_release_volatile.h files to reflect the fact
1177 that both icc and gcc seem to reorder ordinary memory accesses around
1178 volatile accesses early in the compilation. Modify the acquire
1179 release test to catch this problem (with high probability, and only on
1182 2005-03 Hans Boehm <Hans.Boehm@hp.com>
1183 Fixes for recently introduced bugs. Update x86 and x86-64 assembly
1184 syntax to deal with complaints by some recent gcc versions.
1186 2005-02 Hans Boehm <Hans.Boehm@hp.com>
1187 Added libatomic_ops_gpl library with support for mostly
1188 lock-free stack and malloc().
1190 2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
1191 Hans Boehm <Hans.Boehm@hp.com>
1192 Use autoconf, automake, starting with code from Debian package.
1195 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1196 * test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
1197 Change most platforms to use byte-wide test-and-set locations.
1199 2005-01 Hans Boehm <Hans.Boehm@hp.com>
1200 * ao_t_is_int.h: Add to trivially support int-wide operations
1201 on platforms with int-sized pointers.
1203 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1204 * gcc/powerpc.h: First serious attempt to support PowerPC (with
1205 help from Maged Michael and others).
1207 2004-12 Hans Boehm <Hans.Boehm@hp.com>
1208 * sunc/sparc.[hS]: Added minimal support for the Sun SPARC compiler.
1209 * atomic_ops_sysdeps.S: Add support for platforms that require
1210 out-of-line assembly code.
1212 2004-10 Hans Boehm <Hans.Boehm@hp.com>
1213 More work on char, short, int sized data. Add both
1214 compare_double_and_swap_double and compare_and_swap_double.
1215 Typically each platform will provide at most one of these.
1217 2004-07-02 Ranko Zivojnovic
1218 Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
1220 2004-06 Hans Boehm <Hans.Boehm@hp.com>
1221 Start to add atomic_ops primitives for different sized data.
1223 2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
1225 * atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
1226 Fix support for ecc on IA64. Remove compiler_barrier workaround
1227 for gcc 3.4 and later.
1229 2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
1231 * atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
1232 atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
1233 Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
1234 for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
1235 compiler on PA_RISC and IA64.
1237 2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
1239 * many: Install under "atomic_ops" instead of "ao".
1240 Change atomic_ops include file structure. Auxiliary include
1241 files are all under include/atomic_ops.
1242 Fix (hopefully) "make dist" in atomic_ops distribution.
1243 Renamed various types to end in _t, though the old versions
1244 are still defined for backward compatibility.
1246 2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
1248 * ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
1249 AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
1250 helper macros. AO_test_and_set_full uses helper macros.
1253 Started sometime after version 0.4 release. Currently the format is
1254 informal. Eventually should become more GNU-like.