Commit 5e396da6 by Kyrylo Tkachov Committed by Kyrylo Tkachov

[AArch64] Add --enable-fix-cortex-a53-835769 configure-time option

	* 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.

From-SVN: r216076
parent 75cf1494
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> 2014-10-10 Kyrylo Tkachov<kyrylo.tkachov@arm.com>
Ramana Radhakrishnan<ramana.radhakrishnan@arm.com> Ramana Radhakrishnan<ramana.radhakrishnan@arm.com>
...@@ -6387,6 +6387,15 @@ aarch64_override_options (void) ...@@ -6387,6 +6387,15 @@ aarch64_override_options (void)
aarch64_tune = selected_tune->core; aarch64_tune = selected_tune->core;
aarch64_tune_params = selected_tune->tune; 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 (); aarch64_override_options_after_change ();
} }
......
...@@ -68,7 +68,7 @@ Target Report RejectNegative Mask(GENERAL_REGS_ONLY) ...@@ -68,7 +68,7 @@ Target Report RejectNegative Mask(GENERAL_REGS_ONLY)
Generate code which uses only the general registers Generate code which uses only the general registers
mfix-cortex-a53-835769 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 Workaround for ARM Cortex-A53 Erratum number 835769
mlittle-endian mlittle-endian
......
...@@ -920,6 +920,7 @@ with_plugin_ld ...@@ -920,6 +920,7 @@ with_plugin_ld
enable_gnu_indirect_function enable_gnu_indirect_function
enable_initfini_array enable_initfini_array
enable_comdat enable_comdat
enable_fix_cortex_a53_835769
with_glibc_version with_glibc_version
enable_gnu_unique_object enable_gnu_unique_object
enable_linker_build_id enable_linker_build_id
...@@ -1638,6 +1639,14 @@ Optional Features: ...@@ -1638,6 +1639,14 @@ Optional Features:
glibc systems glibc systems
--enable-initfini-array use .init_array/.fini_array sections --enable-initfini-array use .init_array/.fini_array sections
--enable-comdat enable COMDAT group support --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-gnu-unique-object
enable the use of the @gnu_unique_object ELF enable the use of the @gnu_unique_object ELF
extension on glibc systems extension on glibc systems
...@@ -18049,7 +18058,7 @@ else ...@@ -18049,7 +18058,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF cat > conftest.$ac_ext <<_LT_EOF
#line 18052 "configure" #line 18061 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H
...@@ -18155,7 +18164,7 @@ else ...@@ -18155,7 +18164,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF cat > conftest.$ac_ext <<_LT_EOF
#line 18158 "configure" #line 18167 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H
...@@ -23979,6 +23988,25 @@ $as_echo "#define HAVE_AS_MABI_OPTION 1" >>confdefs.h ...@@ -23979,6 +23988,25 @@ $as_echo "#define HAVE_AS_MABI_OPTION 1" >>confdefs.h
done done
fi fi
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. # All TARGET_ABI_OSF targets.
......
...@@ -3526,6 +3526,29 @@ case "$target" in ...@@ -3526,6 +3526,29 @@ case "$target" in
done done
fi fi
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. # All TARGET_ABI_OSF targets.
......
...@@ -3762,6 +3762,16 @@ Binutils pre 2.24 does not have support for selecting @option{-mabi} and ...@@ -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 does not support ILP32. If it is used to build GCC 4.9 or later, GCC will
not support option @option{-mabi=ilp32}. 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 @html
<hr /> <hr />
<!-- rs6000-ibm-aix*, powerpc-ibm-aix* --> <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment