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?

> Think new user space and old kernel and a jump into never-never land.

The kernel helpers are "versioned".  At 0xffff0ffc you can read the 
number of helpers currently available.  If a program uses a new helper 
then when it is started this value can be verified to equal or exceed 
the expected value and bail out otherwise.


Nicolas

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

Reply via email to