diff options
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 9 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.opt | 2 | ||||
-rwxr-xr-x | gcc/configure | 32 | ||||
-rw-r--r-- | gcc/configure.ac | 23 | ||||
-rw-r--r-- | gcc/doc/install.texi | 10 |
6 files changed, 84 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87991ac..8f5db11 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2014-10-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + * configure.ac: Add --enable-fix-cortex-a53-835769 option. + * configure: Regenerate. + * config/aarch64/aarch64.c (aarch64_override_options): Handle + TARGET_FIX_ERR_A53_835769_DEFAULT. + * config/aarch64/aarch64.opt (mfix-cortex-a53-835769): Set Init + value to 2. + * doc/install.texi (aarch64*-*-*): Document + new --enable-fix-cortex-a53-835769 option. + 2014-10-10 Kyrylo Tkachov<kyrylo.tkachov@arm.com> Ramana Radhakrishnan<ramana.radhakrishnan@arm.com> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 76a2480..db5ff59 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -6387,6 +6387,15 @@ aarch64_override_options (void) aarch64_tune = selected_tune->core; aarch64_tune_params = selected_tune->tune; + if (aarch64_fix_a53_err835769 == 2) + { +#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT + aarch64_fix_a53_err835769 = 1; +#else + aarch64_fix_a53_err835769 = 0; +#endif + } + aarch64_override_options_after_change (); } diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt index 77deb2e..fc0307e 100644 --- a/gcc/config/aarch64/aarch64.opt +++ b/gcc/config/aarch64/aarch64.opt @@ -68,7 +68,7 @@ Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Generate code which uses only the general registers mfix-cortex-a53-835769 -Target Report Var(aarch64_fix_a53_err835769) Init(0) +Target Report Var(aarch64_fix_a53_err835769) Init(2) Workaround for ARM Cortex-A53 Erratum number 835769 mlittle-endian diff --git a/gcc/configure b/gcc/configure index 380a235..bd1215d 100755 --- a/gcc/configure +++ b/gcc/configure @@ -920,6 +920,7 @@ with_plugin_ld enable_gnu_indirect_function enable_initfini_array enable_comdat +enable_fix_cortex_a53_835769 with_glibc_version enable_gnu_unique_object enable_linker_build_id @@ -1638,6 +1639,14 @@ Optional Features: glibc systems --enable-initfini-array use .init_array/.fini_array sections --enable-comdat enable COMDAT group support + + --enable-fix-cortex-a53-835769 + enable workaround for AArch64 Cortex-A53 erratum + 835769 by default + --disable-fix-cortex-a53-835769 + disable workaround for AArch64 Cortex-A53 erratum + 835769 by default + --enable-gnu-unique-object enable the use of the @gnu_unique_object ELF extension on glibc systems @@ -18049,7 +18058,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18052 "configure" +#line 18061 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18155,7 +18164,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18158 "configure" +#line 18167 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -23979,6 +23988,25 @@ $as_echo "#define HAVE_AS_MABI_OPTION 1" >>confdefs.h done fi fi + # Enable default workaround for AArch64 Cortex-A53 erratum 835769. + # Check whether --enable-fix-cortex-a53-835769 was given. +if test "${enable_fix_cortex_a53_835769+set}" = set; then : + enableval=$enable_fix_cortex_a53_835769; + case $enableval in + yes) + tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1" + ;; + no) + ;; + *) + as_fn_error "'$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\ + Valid choices are 'yes' and 'no'." "$LINENO" 5 + ;; + + esac + +fi + ;; # All TARGET_ABI_OSF targets. diff --git a/gcc/configure.ac b/gcc/configure.ac index eb480de..8f7c814 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3526,6 +3526,29 @@ case "$target" in done fi fi + # Enable default workaround for AArch64 Cortex-A53 erratum 835769. + AC_ARG_ENABLE(fix-cortex-a53-835769, + [ +AS_HELP_STRING([--enable-fix-cortex-a53-835769], + [enable workaround for AArch64 Cortex-A53 erratum 835769 by default]) +AS_HELP_STRING([--disable-fix-cortex-a53-835769], + [disable workaround for AArch64 Cortex-A53 erratum 835769 by default]) + ], + [ + case $enableval in + yes) + tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1" + ;; + no) + ;; + *) + AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\ + Valid choices are 'yes' and 'no'.]) + ;; + + esac + ], + []) ;; # All TARGET_ABI_OSF targets. diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 75ac9a6..3df78ff 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -3762,6 +3762,16 @@ Binutils pre 2.24 does not have support for selecting @option{-mabi} and does not support ILP32. If it is used to build GCC 4.9 or later, GCC will not support option @option{-mabi=ilp32}. +To enable a workaround for the Cortex-A53 erratum number 835769 by default +(for all CPUs regardless of -mcpu option given) at configure time use the +@option{--enable-fix-cortex-a53-835769} option. This will enable the fix by +default and can be explicitly disabled during during compilation by passing the +@option{-mno-fix-cortex-a53-835769} option. Conversely, +@option{--disable-fix-cortex-a53-835769} will disable the workaround by +default. The workaround is disabled by default if neither of +@option{--enable-fix-cortex-a53-835769} or +@option{--disable-fix-cortex-a53-835769} is given at configure time. + @html <hr /> <!-- rs6000-ibm-aix*, powerpc-ibm-aix* --> |