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-06-08 07:16:22 +00:00
2013-06-08 09:11:20 +00:00
2013-05-29 04:21:42 +00:00
2013-05-30 01:19:02 +00:00
2013-05-12 16:43:26 +00:00
2013-05-10 16:41:26 +00:00
2013-06-01 12:21:59 +00:00
2013-06-03 20:52:20 +00:00
2013-05-31 00:43:41 +00:00