On Sat, May 7, 2011 at 12:39 AM, Nicolas Pitre <nicolas.pi...@linaro.org> wrote: > On Fri, 6 May 2011, Ramana Radhakrishnan wrote: > >> On 6 May 2011 16:06, Ken Werner <ken.wer...@linaro.org> wrote: >> > >> > Currently the GCC ARM backend doesn't provide a pattern to inline 64bit >> > __sync_* functions but the compiler emits __sync_*_8 function calls [1]. >> > The >> > libgcc does not provide these symbols via the usual thin wrapper around the >> > kernel helper [2] because the ARM Linux __kernel_cmpxchg supports 32bit >> > only. >> > My understanding is that for ARMv7 the GCC backend could be enhanced to >> > inline >> > the __sync_* functions by using the LDREXD and STREXD instructions. But for >> > ARMv5 we would still rely on a new kernel helper. >> >> It's a bit tricky with when you want to use the kernel helper for v5t, >> so we've got to find a way of turning this on only with special knobs >> and not by default and that's a bit tricky. > > What is the problem with v5t? Hi, when I run the following on my jaunty (for armv5), I get the following
echo "void f(){__sync_synchronize();}" | gcc -O2 -x c -Wall -dA -S - -o - .arch armv6 .eabi_attribute 27, 3 .fpu vfp .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 2 .eabi_attribute 30, 2 .eabi_attribute 18, 4 .file "" .text .align 2 .global f .type f, %function f: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. @ basic block 2 bx lr .size f, .-f .ident "GCC: (Ubuntu 4.4.1-4ubuntu9) 4.4.1" .section .note.GNU-stack,"",%progbits but I can see (with debugger) that the kernel helper functions are reached. any idea how? saeed _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev