[Patch, AArch64, BFD, LD][2.25] Cortex-A53 erratum 835769 linker workaround.

Tristan Gingold gingold@adacore.com
Fri Oct 24 10:46:00 GMT 2014
> On 24 Oct 2014, at 12:40, Tejas Belagod <tejas.belagod@arm.com> wrote:
> 
> Hi,
> 
> Some early revisions of the Cortex-A53 have an erratum (835769) whereby
> it is possible for a 64-bit multiply-accumulate instruction in AArch64 state to
> generate an incorrect result.  The details are quite complex and hard to
> determine statically, since branches in the code may exist in some
> circumstances, but all cases end with a memory (load, store, or
> prefetch) instruction followed immediately by the multiply-accumulate
> operation.
> 
> We employ a linker patching technique, whereby we move the potentially
> affected multiply-accumulate instruction into a patch region and
> replace the original instruction with a branch to the patch.
> 
> This patch achieves the linker patch. Also, a patch to turn this on from the compiler driver is being submitted independently to the gcc lists.
> 
> The fix is disabled by default and can be turned on by the
> --fix-cortex-a53-835769 linker option.
> 
> Tested on aarch64-none-linux-gnu (and bootstrap with the option) and built and run various large
> benchmarks with it.
> 
> Ok for 2.25?

I have missed the initial question, sorry.  Yes, ok for backport.



More information about the Binutils mailing list