Is this going to end up in a blueprint? This is the last loose end of SMP / atomic memory operations work and I'd like to see it happen
Dave On 18 May 2011, at 16:07, Dave Martin wrote: > On Tue, May 17, 2011 at 5:30 PM, Nicolas Pitre <nicolas.pi...@linaro.org> > wrote: >> On Tue, 17 May 2011, Dave Martin wrote: >> >>> On Fri, May 6, 2011 at 10:39 PM, 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? >>>> >>>>> 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. >>> >>> To what extent do we think that userspace code is actually checking this? >> >> I think right now it is none of it simply because most of the helpers >> were added almost all at once. But if future helpers are added then it >> would be a good idea to check this but only if the new helper is >> actually invoked for a given application. >> >>> I may suggest a patch to the documentation text in entry-armv.S to >>> make this requirement clearer, as well as getting rid of the example >>> assembler code (which I consider to be mis-educative, but more >>> importantly it's also Thumb-incompatible and will likely suffer poor >>> branch-prediction on recent CPUs. >> >> If you have suggestions for improving this then please do so. > > I have a patch which I'll suggest at some point, but it's not high priority. > >> >>> This code was the source of a TLS >>> bug in bionic, and may have been inappropriately pasted elsewhere >>> too...) >> >> What bug? > > Actually, to be fair I think I may be mis-remembering here... I can't > seem to find the exact bug now. > > Cheers > ---Dave > > _______________________________________________ > 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