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. Think new user space and
old kernel and a jump into never-never land. For v7-a you could inline
the function using ldrexd / strexd.


cheers
Ramana






>
> _______________________________________________
> linaro-dev mailing list
> linaro-dev@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-dev
>

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to