diff mbox

[AArch64] LINK_SPEC changes for Cortex-A53 erratum 835769 workaround

Message ID 5447BD29.4060504@arm.com
State New
Headers show

Commit Message

Kyrylo Tkachov Oct. 22, 2014, 2:20 p.m. UTC
Hi all,

This patch contains the LINK_SPEC changes required to pass on the linker 
option --fix-cortex-a53-835769 when compiling with 
-mfix-cortex-a53-835769 (or by default when configured with 
--enable-fix-cortex-a53-835769).

This requires a binutils installation with the patch posted at 
https://sourceware.org/ml/binutils/2014-10/msg00198.html applied.


Bootstrapped and tested on aarch64-none-linux-gnu and built various 
benchmarks.
This patch applies to 4.9 (4.8 version will be posted separately) and 
has been tested there as well.

Ok for trunk and 4.9?

Thanks,
Kyrill



2014-10-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

     * config/aarch64/aarch64-elf-raw.h (CA53_ERR_835769_SPEC): Define.
     (LINK_SPEC): Include CA53_ERR_835769_SPEC.
     * config/aarch64/aarch64-linux.h (CA53_ERR_835769_SPEC): Define.
     (LINK_SPEC): Include CA53_ERR_835769_SPEC.

Comments

Marcus Shawcroft Oct. 24, 2014, 11:04 a.m. UTC | #1
On 22 October 2014 15:20, Kyrill Tkachov <kyrylo.tkachov@arm.com> wrote:
> Hi all,
>
> This patch contains the LINK_SPEC changes required to pass on the linker
> option --fix-cortex-a53-835769 when compiling with -mfix-cortex-a53-835769
> (or by default when configured with --enable-fix-cortex-a53-835769).
>
> This requires a binutils installation with the patch posted at
> https://sourceware.org/ml/binutils/2014-10/msg00198.html applied.
>
>
> Bootstrapped and tested on aarch64-none-linux-gnu and built various
> benchmarks.
> This patch applies to 4.9 (4.8 version will be posted separately) and has
> been tested there as well.
>
> Ok for trunk and 4.9?

The corresponding binutils changes are  committed on binutils trunk,
2.25 and 2.24.

The trunk patch is OK.

Given that Jakub is in the process of preparing a  4.9.2 I'd like an
explicit OK before we commit on 4.9. Jakub?

Cheers
/Marcus
Jakub Jelinek Oct. 24, 2014, 11:08 a.m. UTC | #2
On Fri, Oct 24, 2014 at 12:04:52PM +0100, Marcus Shawcroft wrote:
> On 22 October 2014 15:20, Kyrill Tkachov <kyrylo.tkachov@arm.com> wrote:
> > Hi all,
> >
> > This patch contains the LINK_SPEC changes required to pass on the linker
> > option --fix-cortex-a53-835769 when compiling with -mfix-cortex-a53-835769
> > (or by default when configured with --enable-fix-cortex-a53-835769).
> >
> > This requires a binutils installation with the patch posted at
> > https://sourceware.org/ml/binutils/2014-10/msg00198.html applied.
> >
> >
> > Bootstrapped and tested on aarch64-none-linux-gnu and built various
> > benchmarks.
> > This patch applies to 4.9 (4.8 version will be posted separately) and has
> > been tested there as well.
> >
> > Ok for trunk and 4.9?
> 
> The corresponding binutils changes are  committed on binutils trunk,
> 2.25 and 2.24.
> 
> The trunk patch is OK.
> 
> Given that Jakub is in the process of preparing a  4.9.2 I'd like an
> explicit OK before we commit on 4.9. Jakub?

Is that a regression on the 4.9 branch?  If not, I'd prefer if it could wait
for 4.9.3.

	Jakub
diff mbox

Patch

diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
index b9d4e8d..16ad5c8 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -27,9 +27,18 @@ 
   " crtend%O%s crtn%O%s " \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
 
+#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT
+#define CA53_ERR_835769_SPEC \
+  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#else
+#define CA53_ERR_835769_SPEC \
+  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#endif
+
 #ifndef LINK_SPEC
 #define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} -X \
-  -maarch64elf%{mabi=ilp32*:32}%{mbig-endian:b}"
+  -maarch64elf%{mabi=ilp32*:32}%{mbig-endian:b}" \
+  CA53_ERR_835769_SPEC
 #endif
 
 #endif /* GCC_AARCH64_ELF_RAW_H */
diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
index 3fbde93..d375624 100644
--- a/gcc/config/aarch64/aarch64-linux.h
+++ b/gcc/config/aarch64/aarch64-linux.h
@@ -41,7 +41,16 @@ 
    %{mbig-endian:-EB} %{mlittle-endian:-EL}     \
    -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}"
 
-#define LINK_SPEC LINUX_TARGET_LINK_SPEC
+#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT
+#define CA53_ERR_835769_SPEC \
+  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#else
+#define CA53_ERR_835769_SPEC \
+  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#endif
+
+#define LINK_SPEC LINUX_TARGET_LINK_SPEC \
+                  CA53_ERR_835769_SPEC
 
 #define GNU_USER_TARGET_MATHFILE_SPEC \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"