1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
== [7.3alpha2] (development) ==
* Add '-no-undefined' to LDFLAGS in src/Makefile.am.
* Add AO_and, AO_xor atomic operations.
* Add AO_fetch_compare_and_swap primitives.
* Add and fill in AUTHORS, TODO files.
* Add autogen.sh file.
* Adjust AO_..._H macros in public headers.
* Code refactoring of gcc/arm.h by introducing AO_ARM_HAVE_x macros.
* Define AO macros for libatomic_ops version identification.
* Do not define NDEBUG if '--enable-assertions' passed to configure.
* Eliminate compiler warnings in various functions and macros.
* Generalize AO_compare_and_swap primitives via AO_fetch_compare_and_swap.
* Generalize acquire/release/full CAS primitives for MIPS
* Implement fetch_and_add, test_and_set primitives for MIPS.
* Improve Makefile for MS VC++; pass '-W3' option to MS compiler.
* Include ao_t_is_int.h from atomic_ops.h after first generalization pass
* Merge all Makefile.am files in src tree.
* Minor code refactoring of atomic_ops.c, generic_pthread.h.
* Minor configure build improvements (e.g., ensure proper autoconf version).
* Place only major per-release changes description to ChangeLog (this file).
* Recognize AO_PREFER_GENERALIZED macro to favor generalization over assembly.
* Remove all auto-generated files except for generalize-small.h from the repo.
* Remove duplicate doc/COPYING and empty NEWS files.
* Replace atomic_ops_malloc static mmap-related empty functions with macros.
* Replace pointer relational comparisons with non-pointer ones.
* Require autoconf 2.61 instead of v2.64.
* Show extra compiler warnings (GCC only).
* Turn off AO primitives inlining if AO_NO_INLINE defined.
* Use __builtin_expect in CAS failure loop condition checks (GCC only).
== [7.2] (candidate) ==
* Add atomic_ops.pc.in and atomic_ops-uninstalled.pc.in to pkgconfig folder.
* Define and use AO_PTRDIFF_T in tests for casts between pointer and integer.
* Fix AO_compare_and_swap return type for s390 and PowerPC.
* Fix AO_compare_double_and_swap_double_full for gcc/x86 (PIC mode).
* Fix AO_stack_push_release to workaround bug in clang-1.1/x86 compiler.
* Fix AO_test_and_setXX in tests/list_atomic.template.
* Fix AO_test_and_set_full (gcc/x86[_64].h) to work-around a bug in LLVM v2.7.
* Fix AO_test_and_set_full on m68k.
* Fix __ARM_ARCH_5__ macro handling for Android NDK (ARMv7).
* Fix configure for Cygwin, mingw-w64/32.
* Fix configure to define __PIC__ macro explicitly if needed (GCC).
* Fix double_ptr_storage definition for GCC pre-v4 (x86_64).
* Fix for x32 by removing 'q' suffix in x86-64 instructions.
* Fix generalization for IA-64 (regarding AO_or, AO_..._read/write primitives)
* Fix generalized AO_<type>_fetch_and_add() return type.
* Fix test_atomic_include for the case of missing CAS primitive.
* Fix test_malloc - allocate less memory in case of missing mmap.
* Implement the basic atomic primitives for the hexagon CPU.
== [7.2alpha6] 2011-06-14 ==
* Add missing AO_HAVE_ macros.
* Add support of avr32 CPU.
* Better support of various models of ARM.
* Disable AO_compare_double_and_swap_double_full for SunCC x86 as not working.
* Enable ARM Thumb-2 mode.
* Fix AO_test_and_set_full for SunCC (x86).
* Fix bugs in tests.
* Fix clobbers in AO_compare_and_swap_full (x86.h).
* Fix typos in identifiers and comments.
* Improve AO_sync for PowerPC.
* Improve make scripts (configure.ac).
* Make get_mmaped() in atomic_ops_malloc.c more portable.
* Support Intel compiler.
* Support NaCl target.
* Suppress compiler warnings in various places.
* Test more predefined macros (ARM, PowerPC).
* Use assembly code only for MS VC if available (x86_64).
* Use built-in __sync_bool_compare_and_swap if available (x86_64).
* Workaround bugs in LLVM GCC and SunCC regarding XCHG (x86, x86_64).
== [7.2alpha4] 2009-12-02 ==
* Fix typos in comments, identifiers and documentation.
* Implement AO_compare_and_swap_full for SPARC.
* Refine ARM-specific code.
* Refine code and comments for MS VC.
* Regenerate make scripts.
* Share common code for all 32-bit CPUs (MS VC).
* Support DigitalMars and Watcom compilers.
* Support MS VC for ARM (WinCE).
* Support SH CPU.
* Support win32-pthreads.
* Support x86 and x86_64 for SunCC compiler.
== [7.2alpha2] 2009-05-27 ==
* Add MIPS support.
* Add better support for m68k.
* Add "const" to first parameter of load calls.
* Add parentheses around address argument for various macros.
* Add some platform-specific documentation to INSTALL.
* Add untested 64-bit support for PowerPC.
* Fix AO_compare_and_swap_double_acquire.
* Fix AO_int_fetch_and_add_full (x86_64).
* Fix comments.
* Fix s390 include paths.
* Fix use of lwz instruction (PowerPC).
* Refine clobbers (PowerPC).
* Remove outdated info about Windows support in README.
* Replace K&R-style function definition with ANSI C one.
* add AO_compare_double_and_swap_double for ARMv6.
* gcc/powerpc.h: Consider __NO_LWSYNC__.
== [7.1] 2008-02-11 ==
* Add test_and_set, AO_double_compare_and_swap generalizations.
* Conditionally add compare_double_and_swap_double (x86).
* Conditionally add compare_double_and_swap_double (x86).
* Fix AO_compare_double_and_swap_double_full (x86) for PIC mode.
* Fix AO_load_acquire for PowerPC.
* Fix double-width CAS (x86).
* Refine README (add more warnings about data dependencies).
* Refine double_ptr_storage type definition.
* Support ARMv6+ in GCC.
* Support ArmCC compiler.
* Use _InterlockedExchangeAdd for MS VC (x86).
== [7.0] 2007-06-28 ==
* Add 64-bit version of AO_load_acquire for PowerPC.
* Add support of x86 and x86_64 for MS VC.
* Do not assume that "mfence" is always present (x86.h).
* Fix ARM AO_test_and_set_full.
* Include windows.h (MS VC).
* Update README to reflect C++0x effort.
== [1.2] 2006-07-11 ==
* Add prototypes to suppress compiler warnings.
* Add simple VxWorks support.
* Fix InterlockedCompareExchange proto usage.
* Fix typos (ia64).
* Include all_acquire_release_volatile.h and all_atomic_load_store.h (ia64).
* Initial support for 64-bit targets.
* Use "=q" for AO_test_and_set_full (x86).
* Use inline assembler to generate "mfence" and byte sized XCHG.
* Use new intrinsics available in MSVC 2003 and MSVC 2005.
== [1.1] 2005-09-27 ==
* Add and use read_ordered.h.
* Change function naming from "byte" to "char".
* Fix AO_test_and_set for ARM; define AO_CAN_EMUL_CAS.
== [1.0] 2005-03-21 ==
* Fix various bugs.
* Add atomic_ops primitives for different sized data.
* Add compare_double_and_swap_double and compare_and_swap_double.
* Add initial support for atomic_ops for VC++/Windows/X86 and HP/UX.
* Add minimal support for the Sun SPARC compiler.
* Add support for platforms that require out-of-line assembly code.
* Add support of int-wide operations on platforms with int-sized pointers.
* Added libatomic_ops_gpl library with support for lock-free stack and malloc.
* Attempt to support PowerPC.
* Change atomic_ops include file structure.
* Change most platforms to use byte-wide test-and-set locations.
* Install under "atomic_ops" instead of "ao".
* Remove compiler_barrier workaround for gcc 3.4+.
* Renamed various types to end in _t.
* Use autoconf, automake.
|