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.
>
>

Reply via email to