Implement char/short_fetch_and_add for ARMv6+ (GCC)
authorIvan Maidanski <ivmai@mail.ru>
Sat, 2 Feb 2013 09:40:27 +0000 (13:40 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Sat, 2 Feb 2013 09:40:27 +0000 (13:40 +0400)
commit48d9bc79dc17aae54fb81d1e84f326584e1db5aa
treec4f51483bbf3203638b0b7327537e69600d7fe48
parentd60dd92a34c7e54db11c6d4813b634179087d397
Implement char/short_fetch_and_add for ARMv6+ (GCC)

* src/atomic_ops/sysdeps/gcc/arm.h: Include char_atomic_store.h and
short_atomic_store.h only if not AO_BROKEN_TASKSWITCH_CLREX.
* src/atomic_ops/sysdeps/gcc/arm.h (AO_store): Update comment.
* src/atomic_ops/sysdeps/gcc/arm.h (AO_char_store, AO_short_store):
Implement using LDREXB/STREXB and LDREXH/STREXH, respectively, if
AO_BROKEN_TASKSWITCH_CLREX defined (only if AO_ARM_HAVE_LDREX).
* src/atomic_ops/sysdeps/gcc/arm.h (AO_char_fetch_and_add,
AO_short_fetch_and_add): Implement (based on using LDREXB/STREXB and
LDREXH/STREXH, respectively) if AO_ARM_HAVE_LDREX.
src/atomic_ops/sysdeps/gcc/arm.h