[PATCH v2] ARM: errata: LoUIS bit field in CLIDR register is incorrect

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Jun 6 16:38:58 EDT 2013


On Thu, Jun 06, 2013 at 06:10:02PM +0100, Jon Medhurst (Tixy) wrote:
> +#ifdef CONFIG_ARM_ERRATA_643719
> +	ALT_SMP(mrceq	p15, 0, r2, c0, c0, 0)	@ read main ID register
> +	ALT_UP(moveq	pc, lr)			@ LoUU is zero, so nothing to do
> +	biceq	r2, r2, #0x0000000f             @ clear minor revision number
> +	ldreq	r1, =0x410fc090                 @ ID of ARM Cortex A9 r0p?
> +	teqeq	r2, r1                          @ test for errata affected core and if so...

I'm not sure if it makes much difference on Cortex A9, but we used to
try to delay the use of a loaded value by one instruction where-ever
possible.  This can be done trivially and cheaply on the above by just
reversing the order of the ldreq and biceq.

Of course, if branch prediction and speculative load gets it right, the
theory is there shouldn't be any delay here at all.  So I'm not _that_
bothered about it as this is ARMv7-only code.



More information about the linux-arm-kernel mailing list