[AArch64] Add --enable-fix-cortex-a53-835769 configure-time option
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 10 Oct 2014 12:31:51 +0000 (12:31 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Fri, 10 Oct 2014 12:31:51 +0000 (12:31 +0000)
* 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

gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.opt
gcc/configure
gcc/configure.ac
gcc/doc/install.texi

index 87991acb90592f588d71162a2b7523169ee8df74..8f5db119b13c6965983d918c9f9f31ff50c44bcf 100644 (file)
@@ -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>
 
index 76a2480582a53ef0b465c1da8d7a20f9a2f51402..db5ff59d92ae816bf9ce1eed8a0b388f1493fcf5 100644 (file)
@@ -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 ();
 }
 
index 77deb2e7d364208024404e82bbda30cdc1b32ed1..fc0307e28690aff934a13889cc3309f77d1469a5 100644 (file)
@@ -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
index 380a235860ab5bba8dddc33c425016baed2b7187..bd1215d1fbf422fdd2f23da3c8f0dade28427ef1 100755 (executable)
@@ -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.
index eb480de6bd11f46116472ab58c0f3ecd37eed99c..8f7c814b48360f74ef61455bbcc45d8408977290 100644 (file)
@@ -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.
index 75ac9a698c22d408bddb7fb773c846c2de69dc1e..3df78ff8b70f2713e68766f5ae6813670b1d6a16 100644 (file)
@@ -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* -->