> On Tue, Apr 29, 2014 at 12:52:36AM +0100, Stephen Thomas wrote:
> > I remember that the old thumb didn't support the conditional
> > instructions and was quite slow. I only care about thumb2 and am
> > currently using gcc, so I attach a patch for the thumb that will
>
> The code here is only used on armv6/v7. Do any such chips lack thumb2?
> If there's any doubt, we could look at what gcc generates for the
> __sync_* builtins in thumb mode.
>
> > only work for gcc .
>
> Why is it only for gcc?

I have only tested with gcc. I don't know what llvm nor armcc do.  Is there an ASM standard like ther is for C/C++/fortran? There is some good info on thumb here, https://wiki.ubuntu.com/ARM/Thumb2 and the various ways of supporting ARM. I guess that the thumb2 could be replaced by a __thumb__.  

>
> > I think that gcc builds two versions of atomic
>
> What do you mean by this?

I am building the native toolchain as I would like to run this on an embedded platform. My understanding is that when you build the toolchain you need to provide somethings that end up going in libgcc_s.so such as threading if you are using openmp in C++. etc etc. That patch works for both the -marm and -mthumb or whatever the thumb targets are.

>
> > so the ugly #define was needed. I cannot remember what rvct/rvds or
> > whatever it is branded as these days uses, but from memory old
> > versions didn't support the gnu assebmly syntax.
>
> All asm in musl is gas syntax so this is nothing new.
>
> Rich