I thought there are linux kernel headers with inline assembler for that. They seemed to work in tests on 32 bit platforms.
Admittedly these aren't the gcc __sync* family but would they work? http://www.takatan.net/lxr/source/include/asm-i386/atomic.h?v=2.4.21-47.EL On Tue, Dec 18, 2012 at 3:01 PM, <memcac...@googlecode.com> wrote: > > Comment #3 on issue 301 by dorma...@rydia.net: link fails for GCC atomic > functions > http://code.google.com/p/**memcached/issues/detail?id=301<http://code.google.com/p/memcached/issues/detail?id=301> > > Take a look through the configure script, it's supposed to actually test > and use the atomic call, and fail back if it fails. > > The problem is that 32bit x86 doesn't have 16bit atomics, so they have to > be detected and disabled. Except some versions of GCC (the one you have) > claims to have them anyway, and it'll fail at runtime. 32bit is stuck with > the mutex, but given how much memory you're limited to, I doubt you'd ever > notice the performance drop. It just won't be hugely faster than .11. > > I have no idea why setting march=i686 makes it work right, and I don't > have your OS to test on :/ Since that's all pretty old legacy stuff, we > might have to insist you compile with your workaround. > > I'd consider a patch to the autocrap if it doesn't degrade any of our > supported platforms. > >