1 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
3 * src/atomic_ops.c: Include sys/time.h (to get timespec) for NaCl.
4 * src/atomic_ops_malloc.c (msb): Do the shift by 32 only once (in
5 a conditional expression) to prevent a compiler warning.
6 * src/atomic_ops_malloc.c: Expand all tabs to spaces; remove
7 trailing spaces at EOLn.
9 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
11 * src/atomic_ops.c: Explicitly define AO_USE_NO_SIGNALS and
12 AO_USE_NANOSLEEP for NaCl.
14 2011-02-19 Ivan Maidanski <ivmai@mail.ru>
16 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
17 automake-1.11.1 and libtool-2.4).
20 2011-02-09 Ivan Maidanski <ivmai@mail.ru>
22 * src/atomic_ops.c (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): New
24 * src/atomic_ops.c (AO_USE_WIN32_PTHREADS): Imply
26 * src/atomic_ops.c: Don't include signal.h if AO_USE_NO_SIGNALS.
27 * src/atomic_ops.c: Include time.h if AO_USE_NANOSLEEP.
28 * src/atomic_ops.c (AO_locks, AO_pause): Reformat the code.
29 * src/atomic_ops.c (AO_pause): Use nanosleep() if
31 * src/atomic_ops.c (all_sigs, initialized,
32 AO_compare_and_swap_emulation,
33 AO_compare_double_and_swap_double_emulation): Use
34 AO_USE_NO_SIGNALS instead of AO_USE_WIN32_PTHREADS.
36 2011-01-07 Ivan Maidanski <ivmai@mail.ru>
38 * src/.cvsignore: Add more auto-generated files.
39 * tests/.cvsignore: Ditto.
40 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full, AO_store,
41 AO_compare_double_and_swap_double): Reformat code.
42 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full,
43 AO_compare_double_and_swap_double): Ditto.
44 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
45 Produce "it eq" instruction only for Thumb mode.
46 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
48 2010-11-23 Ivan Maidanski <ivmai@mail.ru> (really Michael Hope)
50 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_compare_and_swap):
51 Insert "it eq" just before "strexeq" (required for Thumb-2 mode,
53 * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Ditto.
55 2010-09-15 Ivan Maidanski <ivmai@mail.ru> (with input from Gregory Farnum)
57 * src/atomic_ops.h: Include armcc/arm_v6.h if __ARMCC__.
58 * src/atomic_ops.h: Include ibmc/powerpc.h if __IBMC__.
59 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if msftc/arm.h is
61 * src/atomic_ops.h: Define AO_GENERALIZE_TWICE if AO_CAN_EMUL_CAS
62 is defined but emul_cas.h has not been included.
63 * src/atomic_ops/sysdeps/gcc/arm.h: Fix a typo.
65 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
67 * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
68 automake-1.11.1 and libtool-2.2.8).
71 2010-08-14 Ivan Maidanski <ivmai@mail.ru>
73 * src/atomic_ops/sysdeps/gcc/arm.h: Replace C++ style comment
76 2010-05-30 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
78 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Use
79 "register long" (instead of "int") for "ret" variable.
80 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_test_and_set): Replace
81 with AO_test_and_set_full (same for AO_HAVE_test_and_set).
82 * src/atomic_ops/sysdeps/gcc/avr32.h (AO_compare_and_swap_full):
83 New function implemented.
85 2010-05-22 Ivan Maidanski <ivmai@mail.ru>
87 * src/atomic_ops/sysdeps/Makefile.am (nobase_sysdep_HEADERS):
89 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
91 2010-05-21 Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith)
93 * src/atomic_ops.h: Recognize __avr32__ (include gcc/avr32.h).
94 * src/atomic_ops/sysdeps/gcc/avr32.h: New file.
96 2010-04-29 Ivan Maidanski <ivmai@mail.ru>
98 * doc/README_malloc.txt: Fix a typo.
99 * doc/README_stack.txt: Ditto.
101 2010-02-25 Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
103 * .cvsignore: New file.
104 * doc/.cvsignore: Ditto.
105 * src/.cvsignore: Ditto.
106 * src/atomic_ops/.cvsignore: Ditto.
107 * src/atomic_ops/sysdeps/.cvsignore: Ditto.
108 * tests/.cvsignore: Ditto.
110 2010-02-19 Ivan Maidanski <ivmai@mail.ru> (mostly really Patrick Marlier)
112 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full):
113 Use __sync_bool_compare_and_swap() if AO_USE_SYNC_CAS_BUILTIN.
114 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
116 * src/atomic_ops.h (AO_USE_SYNC_CAS_BUILTIN): New macro defined
117 if GCC v4.2+ or Intel compiler v11.1+ (only for amd64).
118 * src/atomic_ops.h: Include GCC-specific sysdeps files for Intel
119 compiler in GCC compatible mode (only for x86 and amd64).
121 2010-02-18 Ivan Maidanski <ivmai@mail.ru>
123 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Don't check
124 for AO_USE_PENTIUM4_INSTRS (since "mfence" (SSE2) is supported on
125 all x86_64/amd64 chips); remove the comment.
126 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
127 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Define only
128 if AO_ASM_X64_AVAILABLE.
129 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full):
130 Use built-in __sync_bool_compare_and_swap() if GCC v4.2+.
132 2010-02-17 Ivan Maidanski <ivmai@mail.ru> (really Patrick Marlier)
134 * src/atomic_ops/sysdeps/gcc/x86.h (AO_compare_and_swap_full,
135 AO_compare_double_and_swap_double_full): Use EAX for the result
136 since cmpxchg clobbers it.
137 * src/atomic_ops/sysdeps/sunc/x86.h (AO_compare_and_swap_full,
138 AO_compare_double_and_swap_double_full): Ditto.
139 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_compare_and_swap_full,
140 AO_compare_double_and_swap_double_full): Ditto.
141 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_compare_and_swap_full,
142 AO_compare_double_and_swap_double_full): Ditto.
144 2010-02-04 Ivan Maidanski <ivmai@mail.ru>
146 * doc/Makefile.in: Regenerate.
148 2010-02-04 Ivan Maidanski <ivmai@mail.ru> (really Ian Wienand)
150 * doc/Makefile.am: Remove duplicate file in the list.
152 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
154 * ChangeLog: Fix some typos.
156 2010-02-03 Ivan Maidanski <ivmai@mail.ru>
158 * src/atomic_ops_stack.c (AO_stack_push_explicit_aux_release):
159 Define "i" variable only if used (to suppress a compiler warning).
161 2010-02-02 Ivan Maidanski <ivmai@mail.ru>
163 * src/atomic_ops/sysdeps/sunc/x86.h (AO_test_and_set_full): Fix
164 "xchg" data size (remove "l" suffix).
165 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full):
167 * src/atomic_ops/sysdeps/sunc/x86_64.h (AO_test_and_set_full): Use
169 * src/atomic_ops/sysdeps/sunc/x86.h
170 (AO_compare_double_and_swap_double_full,
171 AO_HAVE_compare_double_and_swap_double_full): Comment out (since
172 not tested, might be wrong, and tickles a bug in some Sun CC
173 versions; besides, __PIC__ macro is never predefined by Sun CC).
175 2010-01-29 Ivan Maidanski <ivmai@mail.ru>
177 * INSTALL: Regenerate (by autoreconf -vif using libtool-2.2.6b,
178 automake-1.11.1, autoconf-2.65).
179 * Makefile.in: Ditto.
182 * config.guess: Ditto.
188 * mkinstalldirs: Ditto.
189 * doc/Makefile.in: Ditto.
190 * src/Makefile.in: Ditto.
191 * src/atomic_ops/Makefile.in: Ditto.
192 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
193 * src/config.h.in: Ditto.
194 * tests/Makefile.in: Ditto.
196 2009-12-19 Ivan Maidanski <ivmai@mail.ru>
198 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_lwsync): Redirect to
199 AO_sync() if __NO_LWSYNC__ (same as for gcc/powerpc.h).
201 2009-12-17 Ivan Maidanski <ivmai@mail.ru> (really Emmanuel Stapf)
203 * src/atomic_ops.h: Recognize _M_X64 (as an alias for _AMD64_).
205 2009-12-04 Ivan Maidanski <ivmai@mail.ru>
207 * configure.ac, README: Change to version 7.2alpha5.
208 * configure: Regenerate.
212 2009-12-02 Ivan Maidanski <ivmai@mail.ru>
214 * configure.ac, README: Change to version 7.2alpha4.
215 * configure: Regenerate.
217 2009-12-01 Ivan Maidanski <ivmai@mail.ru>
219 * configure.ac, README: Change to version 1.3alpha1.
220 * configure: Regenerate.
222 2009-11-21 Ivan Maidanski <ivmai@mail.ru> (really Daniel R. Grayson)
224 * configure.ac (AC_CONFIG_COMMANDS): Quote PICFLAG, CC, DEFS
226 * configure: Regenerate.
228 2009-10-06 Ivan Maidanski <ivmai@mail.ru>
230 * src/atomic_ops/sysdeps/gcc/sh.h: Remove commented out AO_TS_SET
233 2009-10-05 Ivan Maidanski <ivmai@mail.ru>
235 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
237 2009-10-05 Ivan Maidanski <ivmai@mail.ru> (really Takashi YOSHII)
239 * src/atomic_ops/sysdeps/gcc/sh.h: New file.
240 * src/atomic_ops.h: Include gcc/sh.h if __arm__.
241 * src/atomic_ops/sysdeps/Makefile.am: Add gcc/sh.h entry.
243 2009-10-02 Ivan Maidanski <ivmai@mail.ru>
245 * src/atomic_ops/sysdeps/Makefile.am: Add armcc/arm_v6.h,
246 msftc/arm.h, msftc/common32_defs.h, sunc/x86.h sunc/x86_64.h
247 entries; order all entries alphabetically.
248 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
250 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
252 * aclocal.m4: Regenerate (by autoreconf -vif using libtool-2.2,
253 automake-1.10.2, autoconf-2.64).
255 * Makefile.in: Ditto.
257 * config.guess: Ditto.
263 * mkinstalldirs: Ditto.
264 * doc/Makefile.in: Ditto.
265 * src/config.h.in: Ditto.
266 * src/Makefile.in: Ditto.
267 * src/atomic_ops/Makefile.in: Ditto.
268 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
269 * tests/Makefile.in: Ditto.
271 2009-10-01 Ivan Maidanski <ivmai@mail.ru>
273 * src/atomic_ops/sysdeps/gcc/x86.h: Remove spaces preceding '#'
274 for the preprocessor directives.
275 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
277 2009-09-30 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
279 * README: Move notes from the hand-edited part of INSTALL which
280 was overwritten by Automake recently.
282 2009-09-26 Ivan Maidanski <ivmai@mail.ru>
284 * aclocal.m4: Regenerate (by autoreconf -vif).
285 * config.guess: Ditto.
289 * Makefile.in: Ditto.
290 * doc/Makefile.in: Ditto.
291 * src/config.h.in: Ditto.
292 * src/Makefile.in: Ditto.
293 * src/atomic_ops/Makefile.in: Ditto.
294 * src/atomic_ops/sysdeps/Makefile.in: Ditto.
295 * tests/Makefile.in: Ditto.
297 2009-09-25 Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
299 * configure.ac: Replace AC_PROG_CC with AM_PROG_CC_C_O.
301 2009-09-16 Ivan Maidanski <ivmai@mail.ru>
303 * ChangeLog: Remove trailing spaces at EOLn.
304 * doc/README.txt: Expand all tabs to spaces; remove trailing
305 spaces at EOLn; remove multiple trailing blank lines.
306 * src/atomic_ops.c: Ditto.
307 * src/atomic_ops.h: Ditto.
308 * src/atomic_ops/generalize-small.h: Ditto.
309 * src/atomic_ops/generalize.h: Ditto.
310 * src/atomic_ops/sysdeps/acquire_release_volatile.h: Ditto.
311 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Ditto.
312 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Ditto.
313 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Ditto.
314 * src/atomic_ops/sysdeps/ao_t_is_int.h: Ditto.
315 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Ditto.
316 * src/atomic_ops/sysdeps/atomic_load_store.h: Ditto.
317 * src/atomic_ops/sysdeps/char_acquire_release_volatile.h: Ditto.
318 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Ditto.
319 * src/atomic_ops/sysdeps/gcc/alpha.h: Ditto.
320 * src/atomic_ops/sysdeps/gcc/arm.h: Ditto.
321 * src/atomic_ops/sysdeps/gcc/hppa.h: Ditto.
322 * src/atomic_ops/sysdeps/gcc/ia64.h: Ditto.
323 * src/atomic_ops/sysdeps/gcc/m68k.h: Ditto.
324 * src/atomic_ops/sysdeps/gcc/mips.h: Ditto.
325 * src/atomic_ops/sysdeps/gcc/powerpc.h: Ditto.
326 * src/atomic_ops/sysdeps/gcc/s390.h: Ditto.
327 * src/atomic_ops/sysdeps/gcc/sparc.h: Ditto.
328 * src/atomic_ops/sysdeps/gcc/x86.h: Ditto.
329 * src/atomic_ops/sysdeps/gcc/x86_64.h: Ditto.
330 * src/atomic_ops/sysdeps/generic_pthread.h: Ditto.
331 * src/atomic_ops/sysdeps/hpc/hppa.h: Ditto.
332 * src/atomic_ops/sysdeps/hpc/ia64.h: Ditto.
333 * src/atomic_ops/sysdeps/ibmc/powerpc.h: Ditto.
334 * src/atomic_ops/sysdeps/icc/ia64.h: Ditto.
335 * src/atomic_ops/sysdeps/int_acquire_release_volatile.h: Ditto.
336 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Ditto.
337 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Ditto.
338 * src/atomic_ops/sysdeps/msftc/arm.h: Ditto.
339 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Ditto.
340 * src/atomic_ops/sysdeps/msftc/x86.h: Ditto.
341 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
342 * src/atomic_ops/sysdeps/ordered.h: Ditto.
343 * src/atomic_ops/sysdeps/ordered_except_wr.h: Ditto.
344 * src/atomic_ops/sysdeps/read_ordered.h: Ditto.
345 * src/atomic_ops/sysdeps/short_acquire_release_volatile.h: Ditto.
346 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Ditto.
347 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Ditto.
348 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Ditto.
349 * src/atomic_ops/sysdeps/sunc/x86.h: Ditto.
350 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
351 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h: Ditto.
352 * src/atomic_ops_stack.c: Ditto.
353 * src/atomic_ops_stack.h: Ditto.
354 * src/atomic_ops/sysdeps/gcc/arm.h: Replace non-ASCII quotes in a
356 * src/atomic_ops/sysdeps/gcc/mips.h: Use Unix-style EOLn.
358 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
361 * src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
362 (regarding memory barrier).
363 * src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
364 AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
365 * src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
366 AO_test_and_set): Replace FIXME with the comment saying it is
367 emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
368 * src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
369 using InterlockedCompareExchange() (assuming the latter has a full
371 * src/atomic_ops/sysdeps/msftc/arm.h: Include
372 all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
373 of pre-ARMv6; add the comment.
375 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
378 * src/atomic_ops/sysdeps/armcc/arm_v6.h
379 (AO_compare_double_and_swap_double): Replace false/true with 0/1.
380 * src/atomic_ops/sysdeps/gcc/arm.h
381 (AO_compare_double_and_swap_double): Ditto.
382 * src/atomic_ops/sysdeps/gcc/arm.h: Recognize more ARMv6+
383 predefined macros (6J, 6ZK, 7A, 7M, 7R).
384 * src/atomic_ops/sysdeps/gcc/arm.h
385 (AO_compare_double_and_swap_double): Add "cc" clobber to asm.
386 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_HAVE_load_acquire):
387 Correct the name (convert from the lower case).
388 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_HAVE_load_acquire):
390 * src/atomic_ops/sysdeps/ibmc/powerpc.h (AO_test_and_set,
391 AO_compare_and_swap): Comment out unimplemented code (and the
392 corresponding macros); add FIXME.
393 * src/atomic_ops.c: Recognize AO_USE_WIN32_PTHREADS overriding
394 _MSC_VER and __MINGW32__ predefined macros (useful for WinCE with
395 pthreads-w32 library); don't include signal.h, sys/time.h,
396 sys/select.h in this case; include windows.h instead.
397 * src/atomic_ops.c (AO_pause): Use Sleep() in case of
398 AO_USE_WIN32_PTHREADS (instead of select()).
399 * src/atomic_ops.c (all_sigs, initialized): Don't define in case
400 of AO_USE_WIN32_PTHREADS.
401 * src/atomic_ops.c (AO_compare_and_swap_emulation,
402 AO_compare_double_and_swap_double_emulation): Don't deal with
403 signals in case of AO_USE_WIN32_PTHREADS.
405 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
408 * src/atomic_ops/sysdeps/msftc/arm.h: New file (initial support
410 * src/atomic_ops/sysdeps/msftc/common32_defs.h: New file.
411 * src/atomic_ops/sysdeps/msftc/arm.h (AO_ASSUME_ARM_ARCH6): New
413 * src/atomic_ops/sysdeps/msftc/common32_defs.h
414 (AO_USE_INTERLOCKED_INTRINSICS): Ditto.
415 * src/atomic_ops/sysdeps/msftc/x86.h: Move "Interlocked"
416 declarations to common32_defs.h.
417 * src/atomic_ops/sysdeps/msftc/common32_defs.h
418 (AO_INTERLOCKED_VOLATILE): New macro defined (used by
419 Interlocked-based primitives) for compatibility with older VC++.
420 * src/atomic_ops/sysdeps/msftc/common32_defs.h: Don't include
421 missing <intrin.h> if WinCE target.
422 * src/atomic_ops/sysdeps/msftc/x86.h: Include common32_defs.h
423 (define AO_USE_INTERLOCKED_INTRINSICS unconditionally).
424 * src/atomic_ops/sysdeps/msftc/x86.h (AO_fetch_and_add_full,
425 AO_fetch_and_add1_full, AO_fetch_and_sub1_full,
426 AO_compare_and_swap_full): Move arch-independent primitives to
428 * src/atomic_ops/sysdeps/msftc/x86.h: Remove comment about i486 or
429 better CPU (since Interlocked Add and Xchg primitives are available
431 * src/atomic_ops.h: Include msftc/x86.h even if _M_IX86 is less than
433 * src/atomic_ops.h: Include msftc/x86.h if "x86" defined (for WinCE
435 * src/atomic_ops.h: Include msftc/arm.h if ARM target (for WinCE).
437 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
440 * src/atomic_ops/sysdeps/msftc/x86.h: Fix comments (prefix
441 ASSUME_WINDOWS98 with "AO_").
442 * src/atomic_ops/sysdeps/msftc/x86.h: Prefix ASSUME_VISTA macro with
444 * src/atomic_ops/sysdeps/msftc/x86.h (AO_nop_full): Replace
445 K&R-style function definition with ANSI C one.
446 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full):
447 Replace AO_TS_SET with its value 0xff (some compilers does not like
448 C enum consts inside inline assembler).
449 * src/atomic_ops/sysdeps/msftc/x86.h (AO_test_and_set_full): Add
450 comment about "missing return value" warning.
451 * src/atomic_ops/sysdeps/msftc/x86.h
452 (AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE): New macro.
453 * src/atomic_ops/sysdeps/msftc/x86.h (AO_compare_and_swap_full): Use
454 _InterlockedCompareExchange() with args and result of PVOID type
455 if AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE is defined (mostly for
456 DigitalMars compiler support).
457 * src/atomic_ops/sysdeps/msftc/x86.h
458 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
459 variables ("val1" is the lowest part of AO_double_t).
460 * src/atomic_ops/sysdeps/msftc/x86.h
461 (AO_compare_double_and_swap_double_full): Rename to
462 AO_double_compare_and_swap_full (as it has 3 args).
463 * src/atomic_ops/sysdeps/msftc/x86.h: Replace C++ style comment
466 2009-09-10 Ivan Maidanski <ivmai@mail.ru>
469 * src/atomic_ops/sysdeps/gcc/x86_64.h: Remove comments about i486
471 * src/atomic_ops/sysdeps/msftc/x86_64.h: Ditto.
472 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_nop_full): Replace
473 K&R-style function definition with ANSI C one.
474 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Ditto.
475 * src/atomic_ops/sysdeps/gcc/x86_64.h
476 (AO_compare_double_and_swap_double_full): Fix comment.
477 * src/atomic_ops/sysdeps/gcc/x86_64.h
478 (AO_compare_double_and_swap_double_full): Swap all "val1" and "val2"
479 variables ("val1" is the lowest part of AO_double_t).
480 * src/atomic_ops/sysdeps/msftc/x86_64.h
481 (AO_compare_double_and_swap_double_full): Ditto.
482 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove comment about
484 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_ASM_X64_AVAILABLE): New
486 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
487 "test_and_set_t_is_char.h" if AO_ASM_X64_AVAILABLE (same as in
488 x86_64.h for gcc); remove FIXME (for re-implement test-and-set).
489 * src/atomic_ops/sysdeps/msftc/x86_64.h: Include
490 "standard_ao_double_t.h" (same as in x86_64.h for gcc).
491 * src/atomic_ops/sysdeps/msftc/x86_64.h: Add comment for include
492 <intrin.h> assuming at least VC++ v8.
493 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove _Interlocked
494 prototypes (since they are always declared in intrin.h).
495 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_nop_full): Move its
496 definition below CAS primitive (to textually group all asm-based
497 primitives together).
498 * src/atomic_ops/sysdeps/msftc/x86_64.h (AO_test_and_set_full):
499 Implement for AO_ASM_X64_AVAILABLE case.
500 * src/atomic_ops/sysdeps/msftc/x86_64.h: Remove AO_CASDOUBLE_MISSING
501 macro (replaced with AO_ASM_X64_AVAILABLE).
502 * src/atomic_ops/sysdeps/msftc/x86_64.h
503 (AO_compare_double_and_swap_double_full): Add intrinsic-based
504 implementation for VC++ v9+.
505 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Include
506 <xmmintrin.h> (and use "__m128" type) if _WIN64.
507 * src/atomic_ops/sysdeps/standard_ao_double_t.h
508 (AO_HAVE_DOUBLE_PTR_STORAGE): Define it always (as
509 "double_ptr_storage" is defined for all cases).
511 2009-09-09 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
513 * src/atomic_ops/sysdeps/gcc/sparc.h (NO_SPARC_V9):
514 Renamed to AO_NO_SPARC_V9.
516 2009-09-01 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Patrick Marlier)
518 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
519 AO_TS_VAL_t for "oldval" (for 64-bit support).
520 * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
521 New function implemented.
523 2009-08-12 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
524 (diff107_cvs, resembling diff78 and diff88_cvs)
526 * src/atomic_ops/sysdeps/sunc/x86.h: New file.
527 * src/atomic_ops/sysdeps/sunc/x86_64.h: Ditto.
528 * src/atomic_ops.h (AO_INLINE): Support inlining for DigitalMars,
530 * src/atomic_ops.h (AO_compiler_barrier): Use intrinsic-based
531 implementation for VC++ v8+ (include <intrin.h> before it unless
532 WinCE target); use asm-based barrier implementation for Borland,
533 DigitalMars and Watcom.
534 * src/atomic_ops.h: Fix comment (for x86_64).
535 * src/atomic_ops.h: Include specialized x86.h and x86_64.h arch
536 headers for Sun C (if not AO_USE_PTHREAD_DEFS).
537 * src/atomic_ops.h: Include VC-specific arch headers for Borland,
538 DigitalMars and Watcom (Win32 target only).
540 2009-05-27 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
541 (diff87_cvs, resembling diff29, diff68, diff78 partly)
543 * doc/README.txt: Remove outdated info about Windows support.
544 * src/atomic_ops/generalize.h (AO_nop_full): Replace
545 K&R-style function definition with ANSI C one.
546 * src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Ditto.
547 * src/atomic_ops/sysdeps/gcc/alpha.h (AO_nop_full, AO_nop_write):
549 * src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Ditto.
550 * src/atomic_ops/sysdeps/gcc/ia64.h (AO_nop_full): Ditto.
551 * src/atomic_ops/sysdeps/gcc/mips.h (AO_nop_full): Ditto.
552 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_nop_full, AO_lwsync): Ditto.
553 * src/atomic_ops/sysdeps/gcc/x86.h (AO_nop_full): Ditto.
554 * src/atomic_ops/sysdeps/generic_pthread.h (AO_nop_full): Ditto.
555 * src/atomic_ops/sysdeps/hpc/ia64.h (AO_nop_full): Ditto.
556 * src/atomic_ops/sysdeps/icc/ia64.h (AO_nop_full): Ditto.
557 * src/atomic_ops/sysdeps/ordered.h (AO_nop_full): Ditto.
558 * src/atomic_ops/sysdeps/ordered_except_wr.h (AO_nop_write): Ditto.
559 * src/atomic_ops/sysdeps/read_ordered.h (AO_nop_read): Ditto.
560 * src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h (AO_TS_val): Fix
563 2009-02-24 Hans Boehm <Hans.Boehm@hp.com> (Really primarily Earl Chew)
565 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add index,
566 update modifiers to asms, refine clobbers to "cr0", use
567 cr0 instead of cr7, add explicit AO_fetch_and_add,
568 add UNTESTED 64 bit support.
570 2008-11-10 Hans Boehm <Hans.Boehm@hp.com> (Really Joerg Wagner)
572 * src/atomic_ops/sysdeps/armcc/arm_v6.h: Compute
573 AO_compare_and_swap value differently, add
574 AO_compare_double_and_swap_double, some indentation fixes.
575 * src/atomic_ops/sysdeps/gcc/arm.h: Make gcc asm code more
576 robust and minimize clobbers, Add AO_compare_double_and_swap_double.
578 2008-11-06 Hans Boehm <Hans.Boehm@hp.com>
580 * INSTALL: Add some platform-specific documentation.
581 * src/Makefile.msft: Fix copyright notice.
583 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
585 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
586 * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
587 * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
588 * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
589 * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
590 * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
591 * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
592 * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
593 * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
594 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
595 * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
596 * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
597 * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix comments.
598 * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
599 * src/atomic_ops.c: Fix comments.
600 * src/atomic_ops.h: Fix comments.
601 * src/atomic_ops_stack.c: Fix comments.
602 * src/atomic_ops_stack.h: Fix comments.
604 2008-10-20 Hans Boehm <Hans.Boehm@hp.com> (really Andrew Agno)
606 * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
609 2008-08-21 Hans Boehm <Hans.Boehm@hp.com>
611 * config.guess, config.sub, configure: Regenerate/replace.
612 Use autoconf 2.61, automake 1.9.6.
614 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Thiemo Seufer)
616 * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz
619 2008-08-19 Hans Boehm <Hans.Boehm@hp.com> (really Sebastian Siewior)
621 * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__.
623 2008-07-24 Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
625 * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h:
626 Add parentheses around addr arg for various functions.
628 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
630 * src/atomic_ops/sysdeps/gcc/powerpc.h:
631 Add const to first parameter of load calls (forgot one).
633 2008-07-18 Hans Boehm <Hans.Boehm@hp.com>
635 * doc/README.txt, src/atomic_ops/generalize.h,
636 src/atomic_ops/generalize-small.template,
637 src/atomic_ops/generalize-small.h,
638 src/atomic_ops/sysdeps/acquire_release_volatile.h,
639 src/atomic_ops/sysdeps/char_acquire_release_volatile.h,
640 src/atomic_ops/sysdeps/int_acquire_release_volatile.h,
641 src/atomic_ops/sysdeps/short_acquire_release_volatile.h,
642 src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
643 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
644 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
645 src/atomic_ops/sysdeps/ao_t_is_int.h,
646 src/atomic_ops/sysdeps/atomic_load_store.h,
647 src/atomic_ops/sysdeps/char_atomic_load_store.h,
648 src/atomic_ops/sysdeps/int_atomic_load_store.h,
649 src/atomic_ops/sysdeps/short_atomic_load_store.h,
650 src/atomic_ops/sysdeps/generic_pthread.h,
651 src/atomic_ops/sysdeps/read_ordered.h,
652 src/atomic_ops/sysdeps/sysdeps/armcc/arm_v6.h,
653 src/atomic_ops/sysdeps/gcc/arm.h,
654 src/atomic_ops/sysdeps/icc/ia64.h,
655 src/atomic_ops/sysdeps/ibmc/powerpc.h:
656 Add const to first parameter of load calls.
658 2008-07-10 Hans Boehm <Hans.Boehm@hp.com>
660 * src/atomic_ops/sysdeps/gcc/m68k.h: Remove SMP-unsafe
661 AO_or_full, and let it be autogenerated instead.
663 2008-07-03 Hans Boehm <Hans.Boehm@hp.com> (Really Thiemo Seufer)
665 * src/atomic_ops/sysdeps/gcc/mips.h: Really add mips support,
666 fixing a merge accident.
668 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
671 * doc/Makefile.in, src/Makefile.in, src/atomic_ops/Makefile.in:
674 2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (Really from various Debian
677 * src/atomic_ops.h, src/atomic_ops/sysdeps/Makefile.am,
678 src/atomic_ops/sysdeps/gcc/mips.h: Add mips support.
679 * src/atomic_ops/sysdeps/gcc/m68k.h: Make test_and_set work
680 on char, align AO_t. Add cas, or.
681 * src/atomic_ops/sysdeps/gcc/s390.h: Fix include paths.
682 * src/atomic_ops/generalize.h: Fix AO_compare_and_swap_double_acquire.
683 * Makefile.in, aclocal.m4, src/atomic_ops/sysdeps/Makefile.in,
684 tests/Makefile.in: Regenerate.
686 2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
687 (Really Ian Wienand & Debian maintainers)
689 * src/atomic_ops/sysdeps/gcc/x86.h
690 (AO_compare_double_and_swap_double_full): Correctly account for
693 2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
695 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
696 double_ptr_storage default to long long; define everywhere.
698 2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
700 * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
701 compare_double_and_swap_double.
703 2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
705 * src/atomic_ops/generalize.h: Add test_and_set generalizations,
706 Add AO_double_compare_and_swap generalizations.
707 * src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
708 * src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
709 * src/atomic_ops/sysdeps/gcc/x86.h,
710 src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
711 compare_double_and_swap_double, commented out for msftc.
712 * src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
713 double_ptr_storage field.
715 2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
716 (Merge from separate atomic_ops tree)
718 * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
719 double-width cas, and fix its implementation.
720 * doc/README.txt: Clarify use of _full. Add more warnings about
723 2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
725 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
726 %X1 modifier to support indexed addressing.
728 2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
730 * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
733 2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
735 * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
738 2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
740 * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
743 2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
745 * src/atomic_ops.h: include stddef.h
747 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
749 * src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
750 * src/atomic_ops.h: Add test for msftc/x86_64.h.
751 * src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
752 * src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
753 * src/atomic_ops/sysdeps/Makefile.in: Regenerate.
754 * src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
755 src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
756 src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
757 Replace unsigned long cast with size_t.
759 2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
761 * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
764 2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
766 * doc/README.txt: Update to reflect C++0x effort.
768 2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
770 * src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
772 * src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
775 2006-11-09 Earl Chew (Agilent)
777 * msftc/x86.h: Follow Microsoft documentation and include
782 2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
784 * src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
786 2006-03-28 Earl Chew (Agilent)
788 * src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
789 * src/atomic_ops/sysdeps/msftc/x86.h:
790 Use new intrinsics available in MSVC 2003 and MSVC 2005.
791 Use inline assembler to generate mfence and byte sized xchg
792 Use correct prototype for InterlockedCompareExchange.
793 * src/atomic_ops.h: Add test for __PPC__ .
794 * tests/run_parallel.inc: Add simple VxWorks support.
795 * tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
796 to silence compiler warnings.
798 2006-11-13 Hans Boehm <Hans.Boehm@hp.com>
800 * src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
801 * src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
803 2005-11-04 Hans Boehm <Hans.Boehm@hp.com>
805 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
806 all_acquire_release_volatile.h, instead of just the pointer-sized
808 * src/atomic_ops/sysdeps/gcc/ia64.h: Include
809 all_acquire_release_volatile.h and all_atomic_load_store.h,
810 instead of just the pointer-sized versions.
814 2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
816 * src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
817 * src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
819 * src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
820 instead of duplicating it.
821 * src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
823 2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
825 * src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
826 definition with one that might actually work. (Thanks to Kazu
827 Hirata and Paul Brook.)
829 2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
831 * src/atomic_ops/Makefile.am: Change function naming from "byte" to
836 2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
837 Fix various acquire_release_volatile.h files to reflect the fact
838 that both icc and gcc seem to reorder ordinary memory accesses around
839 volatile accesses early in the compilation. Modify the acquire
840 release test to catch this problem (with high probability, and only on
843 2005-03 Hans Boehm <Hans.Boehm@hp.com>
844 Fixes for recently introduced bugs. Update x86 and x86-64 assembly
845 syntax to deal with complaints by some recent gcc versions.
847 2005-02 Hans Boehm <Hans.Boehm@hp.com>
848 Added libatomic_ops_gpl library with support for mostly
849 lock-free stack and malloc().
851 2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
852 Hans Boehm <Hans.Boehm@hp.com>
853 Use autoconf, automake, starting with code from Debian package.
856 2005-01 Hans Boehm <Hans.Boehm@hp.com>
857 * test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
858 Change most platforms to use byte-wide test-and-set locations.
860 2005-01 Hans Boehm <Hans.Boehm@hp.com>
861 * ao_t_is_int.h: Add to trivially support int-wide operations
862 on platforms with int-sized pointers.
864 2004-12 Hans Boehm <Hans.Boehm@hp.com>
865 * gcc/powerpc.h: First serious attempt to support PowerPC (with
866 help from Maged Michael and others).
868 2004-12 Hans Boehm <Hans.Boehm@hp.com>
869 * sunc/sparc.[hS]: Added minimal support for the Sun SPARC compiler.
870 * atomic_ops_sysdeps.S: Add support for platforms that require
871 out-of-line assembly code.
873 2004-10 Hans Boehm <Hans.Boehm@hp.com>
874 More work on char, short, int sized data. Add both
875 compare_double_and_swap_double and compare_and_swap_double.
876 Typically each platform will provide at most one of these.
878 2004-07-02 Ranko Zivojnovic
879 Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
881 2004-06 Hans Boehm <Hans.Boehm@hp.com>
882 Start to add atomic_ops primitives for different sized data.
884 2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
886 * atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
887 Fix support for ecc on IA64. Remove compiler_barrier workaround
888 for gcc 3.4 and later.
890 2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
892 * atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
893 atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
894 Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
895 for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
896 compiler on PA_RISC and IA64.
898 2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
900 * many: Install under "atomic_ops" instead of "ao".
901 Change atomic_ops include file structure. Auxiliary include
902 files are all under include/atomic_ops.
903 Fix (hopefully) "make dist" in atomic_ops distribution.
904 Renamed various types to end in _t, though the old versions
905 are still defined for backward compatibility.
907 2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
909 * ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
910 AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
911 helper macros. AO_test_and_set_full uses helper macros.
914 Started sometime after version 0.4 release. Currently the format is
915 informal. Eventually should become more GNU-like.