[PATCH] arm: Replace CONFIG_HAS_TLS_REG with HWCAP_TLS and check for it on V6
Tony Lindgren
tony at atomide.com
Fri Mar 19 11:58:05 EDT 2010
* Russell King - ARM Linux <linux at arm.linux.org.uk> [100319 01:49]:
> On Thu, Mar 18, 2010 at 06:35:21PM -0700, Tony Lindgren wrote:
> > -#if defined(CONFIG_HAS_TLS_REG)
> > - mcr p15, 0, r3, c13, c0, 3 @ set TLS register
> > -#elif !defined(CONFIG_TLS_REG_EMUL)
> > - mov r4, #0xffff0fff
> > - str r3, [r4, #-15] @ TLS val at 0xffff0ff0
> > +#if !defined(CONFIG_TLS_REG_EMUL)
> > + ldr r4, =elf_hwcap
> > + ldr r4, [r4, #0]
> > + tst r4, #HWCAP_TLS @ hardware with TLS?
>
> This is really really inefficient. Both the second ldr and tst will stall
> the pipeline because they need to wait for the result of the precending
> ldr. Can we do better by re-ordering some instructions?
Or set ifdef CONFIG_CPU_V6 and test for the cp15 id register every time..
> Also, the ifndef seems incorrect - if we have TLS_REG_EMUL we seem to omit
> all this code.
Is the current ifdef elif wrong? The current code does not seem to
do anything if TLS_REG_EMUL is set and HAS_TLS_REG is not set.
HAS_TLS_REG depends !TLS_REG_EMUL.
Regards,
Tony
More information about the linux-arm-kernel
mailing list