History log of /netbsd-current/common/lib/libc/arch/arm/atomic/Makefile.inc
Revision Date Author Comments
# 1.29 07-Jun-2015 matt

Back out last change; fixed in the correct place.


# 1.28 07-Jun-2015 joerg

Require ARMv5TE to assemble.


# 1.27 17-May-2015 justin

Move arm sync_* changes to Makefile.inc


# 1.26 14-Oct-2014 martin

Provide C++ 2011 <atomic> support functions for hppa and arm.


# 1.25 13-Oct-2014 martin

Move the and_{16,8}_nv sources into the right (libc only) block.


# 1.24 13-Oct-2014 martin

Provide __sync_and_and_fetch_2 and __sync_and_and_fetch_1 for pre-ARMv6,
they are needed for the C++ 2011 <atomic> stuff.


# 1.23 05-Jul-2014 joerg

branches: 1.23.2;
Provide a basic implementation of __atomic_load_* and __atomic_store_*,
used by GCC and LLVM as backing for C11/C++11 atomics, if the hardware
is not known to have corresponding features. Include it on ARM as LLVM
and libc++ hit it when compiled for ARMv4.


# 1.22 04-Mar-2014 matt

branches: 1.22.2;
Don't export __sync* if _KERNEL || _STANDALONE are defined.
(except if _RUMPKERNEL is defined)


# 1.21 03-Mar-2014 matt

fix typo.


# 1.20 03-Mar-2014 matt

Add atomic_sub_64.S


# 1.19 27-Feb-2014 matt

Add atomic_cas_64 support for ARM EABI on V5TE and V5TEJ cpus.
(strd is atomic).


# 1.18 21-Feb-2014 martin

Missed one __sync_* op (or gcc4.8 does inline it, while 4.5 does not?)


# 1.17 22-Feb-2014 martin

Move the __sync_* ops added in the previous change to a libc-only section


# 1.16 21-Feb-2014 martin

Provide the missing __sync_* ops for earlier arm versions


# 1.15 27-Jan-2014 matt

Add _atomic_cas_16_up and _atomic_cas_8_up


# 1.14 08-Nov-2013 matt

Add support for the gcc __sync builtins.
Note that these need earmv6 or later to get the ldrex/strex instructions


# 1.13 18-Aug-2013 matt

Rework to allow thumb armv7 compilation.
Add atomic_simplelock.c for thumb


# 1.12 06-Aug-2013 matt

Only use MACHINE_ARCH if !_STANDALONE and CPPFLAGS/CFLAGS/CPUFLAGS don't
contain -mcpu or -march


# 1.11 06-Aug-2013 matt

Select ldrex/strex if ${MACHINE_ARCH:Mearmv[67]*}


# 1.10 11-Sep-2012 matt

branches: 1.10.2;
Add 64bit atomic ops for ARMv6+ (using ldrexd/strexd).


# 1.9 15-Aug-2012 matt

Actually use the assembly version of the atomic function if compiling
for armv6 or armv7 cpus. Use atomic_cas_ptr instead of _lock_cas so
we pick up the assembly version when it's used.


# 1.8 03-Jan-2009 pooka

branches: 1.8.8; 1.8.12;
allow inclusion of atomic ops in librump


# 1.7 29-Sep-2008 ad

branches: 1.7.8;
Allow atomic ops to be built as part of libpthread.


# 1.6 29-Apr-2008 scw

Implement _atomic_cas_up() in assembly code as the compiler cannot be
trusted to generate fully restartable code sequences.

Addresses lib/38482 for ARM and m68000.


# 1.5 11-Feb-2008 ad

branches: 1.5.4;
Only build atomic ops for libkern/libc.


# 1.4 10-Feb-2008 ad

Enable the atomic ops in userspace.


# 1.3 29-Nov-2007 ad

branches: 1.3.4;
Use the CAS-based inc/dec variants, since these CPUs don't have atomic
add in hardware (does arm?).


# 1.2 29-Nov-2007 ad

Atomic ops for arm.


# 1.1 18-Apr-2007 thorpej

branches: 1.1.2;
file Makefile.inc was initially added on branch thorpej-atomic.


# 1.1.2.2 25-Aug-2007 matt

Add armv6 variants of atomic ops which use ldrex/strex.
Add atomic_swap (all arm architectures) which uses swp and swpb.
Add membar_ops which uses armv6 data {sync, memory} barrier.
XXX let thorpej figure out the Makefile magic.


# 1.1.2.1 18-Apr-2007 thorpej

Atomic ops implementation for ARM. Everything is built on top of
atomic_cas_32(), which is itself a restartable atomic sequence.


# 1.3.4.3 22-Mar-2008 matt

sync with HEAD


# 1.3.4.2 08-Jan-2008 matt

sync with HEAD


# 1.3.4.1 29-Nov-2007 matt

file Makefile.inc was added on branch matt-armv6 on 2008-01-09 01:20:51 +0000


# 1.5.4.1 18-May-2008 yamt

sync with head.


# 1.7.8.2 15-Feb-2014 matt

Add 64-bit atomic ops if ARMv6+


# 1.7.8.1 18-Dec-2013 matt

Enable ldrex/strex based atomic ops on armv6/armv7


# 1.8.12.1 27-Nov-2012 matt

Pull atomic ops from HEAD.


# 1.8.8.2 22-May-2014 yamt

sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")


# 1.8.8.1 30-Oct-2012 yamt

sync with head


# 1.10.2.1 19-Aug-2014 tls

Rebase to HEAD as of a few days ago.


# 1.22.2.1 10-Aug-2014 tls

Rebase.


# 1.23.2.1 12-Nov-2014 snj

Pull up following revision(s) (requested by martin in ticket #218):
common/lib/libc/arch/arm/atomic/Makefile.inc: revision 1.24-1.26
common/lib/libc/arch/hppa/atomic/Makefile.inc: revision 1.13
common/lib/libc/arch/mips/atomic/Makefile.inc: revision 1.13
common/lib/libc/arch/sh3/atomic/Makefile.inc: revision 1.7
common/lib/libc/arch/sparc/atomic/Makefile.inc: revision 1.18
common/lib/libc/arch/vax/atomic/Makefile.inc: revision 1.7
common/lib/libc/atomic/atomic_and_16_nv_cas.c: revision 1.2
common/lib/libc/atomic/atomic_and_8_nv_cas.c: revision 1.2
common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c: revision 1.1-1.2
common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c: revision 1.1-1.2
common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c: revision 1.1-1.2
common/lib/libc/atomic/atomic_cas_by_cas32.c: revision 1.4
common/lib/libc/atomic/atomic_op_namespace.h: revision 1.7
Add __sync_val_compare_and_swap_{1,2} aliases for _atomic_cas_{8,16}
--
Provide __atomic_compare_exchange_N (as needed for the C11 2011 <atomic>
ops) via the corresponding CAS.
--
Hook __atomic_compare_exchange_N into vax libc.
--
Provide __sync_and_and_fetch_2 and __sync_and_and_fetch_1 for pre-ARMv6,
they are needed for the C++ 2011 <atomic> stuff.
--
Add C++ 2011 <atomic> support functions.
--
Move the and_{16,8}_nv sources into the right (libc only) block.
--
Provide <atomic> C++ 2011 support functions for mips and sh3.
--
Provide C++ 2011 <atomic> support functions for hppa and arm.
--
Provide prototypes to fix build with clang.