Ed Schouten 2e5d5dc936 Add proper __sync_*() intrinsics for MIPS.
To make <stdatomic.h> work on MIPS (and ARM) using GCC, we need to
provide implementations of the __sync_*() functions. I already added
these functions for 4 and 8 byte types to libcompiler-rt some time ago,
based on top of <machine/atomic.h>.

Unfortunately, <machine/atomic.h> only provides a subset of the features
needed to implement <stdatomic.h>. This means that in some cases we had
to do compare-and-exchange calls in loops, where a simple ll/sc would
suffice.

Also implement these functions for 1 and 2 byte types. MIPS only
provides ll/sc instructions for 4 and 8 byte types, but this is of
course no limitation. We can simply load 4 bytes and use some bitmask
tricks to modify only the bytes affected.

Discussed on:	mips, arch
Tested with:	QEMU
2013-06-08 13:19:11 +00:00
..
2013-02-26 01:00:11 +00:00
2013-02-26 01:00:11 +00:00
2013-05-12 01:53:47 +00:00
2013-02-26 01:00:11 +00:00
2013-02-26 01:00:11 +00:00
2013-04-12 16:03:22 +00:00
2013-02-28 13:46:03 +00:00
2013-02-26 01:00:11 +00:00
2013-02-26 01:00:11 +00:00