aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2015-05-12 08:55:54 +0000
committerYvan Roux <yvan.roux@linaro.org>2015-05-12 08:55:54 +0000
commit2bffa540b5539b986bfbb17ace693d4cff3d3183 (patch)
tree2b678373882a099e649626f1af72a47b1d9179d0
parenta37c5641af2fb1f712bec79e761abda5cf99cfe5 (diff)
2015-05-12 Yvan Roux <yvan.roux@linaro.org>
Backport from mainline. 2015-05-05 Yvan Roux <yvan.roux@linaro.org> * config/aarch64/aarch64-elf-raw.h (CA53_ERR_843419_SPEC): Define. (LINK_SPEC): Include CA53_ERR_843419_SPEC. * config/aarch64/aarch64-linux.h (CA53_ERR_843419_SPEC): Define. (LINK_SPEC): Include CA53_ERR_843419_SPEC. * config/aarch64/aarch64.opt (mfix-cortex-a53-843419): New option. * configure: Regenerate. * configure.ac: Add --enable-fix-cortex-a53-843419 option. * doc/install.texi (aarch64*-*-*): Document new --enable-fix-cortex-a53-843419 option. * doc/invoke.texi (AArch64 Options): Document -mfix-cortex-a53-843419 and -mno-fix-cortex-a53-843419 options. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@223046 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog17
-rw-r--r--gcc/config/aarch64/aarch64-elf-raw.h11
-rw-r--r--gcc/config/aarch64/aarch64-linux.h11
-rw-r--r--gcc/config/aarch64/aarch64.opt4
-rwxr-xr-xgcc/configure32
-rw-r--r--gcc/configure.ac23
-rw-r--r--gcc/doc/install.texi13
-rw-r--r--gcc/doc/invoke.texi9
8 files changed, 115 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 54d637bf63d..f4e36cb31ad 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,20 @@
+2015-05-12 Yvan Roux <yvan.roux@linaro.org>
+
+ Backport from mainline.
+ 2015-05-05 Yvan Roux <yvan.roux@linaro.org>
+
+ * config/aarch64/aarch64-elf-raw.h (CA53_ERR_843419_SPEC): Define.
+ (LINK_SPEC): Include CA53_ERR_843419_SPEC.
+ * config/aarch64/aarch64-linux.h (CA53_ERR_843419_SPEC): Define.
+ (LINK_SPEC): Include CA53_ERR_843419_SPEC.
+ * config/aarch64/aarch64.opt (mfix-cortex-a53-843419): New option.
+ * configure: Regenerate.
+ * configure.ac: Add --enable-fix-cortex-a53-843419 option.
+ * doc/install.texi (aarch64*-*-*): Document new
+ --enable-fix-cortex-a53-843419 option.
+ * doc/invoke.texi (AArch64 Options): Document -mfix-cortex-a53-843419
+ and -mno-fix-cortex-a53-843419 options.
+
2015-05-06 Uros Bizjak <ubizjak@gmail.com>
PR target/65990
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
index eafdd551d3e..48e3dfb3fd0 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -33,10 +33,19 @@
" %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
#endif
+#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
+#define CA53_ERR_843419_SPEC \
+ " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#else
+#define CA53_ERR_843419_SPEC \
+ " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#endif
+
#ifndef LINK_SPEC
#define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} -X \
-maarch64elf%{mabi=ilp32*:32}%{mbig-endian:b}" \
- CA53_ERR_835769_SPEC
+ CA53_ERR_835769_SPEC \
+ CA53_ERR_843419_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 c47fbae218d..b7d2d60f389 100644
--- a/gcc/config/aarch64/aarch64-linux.h
+++ b/gcc/config/aarch64/aarch64-linux.h
@@ -43,8 +43,17 @@
" %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
#endif
+#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
+#define CA53_ERR_843419_SPEC \
+ " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#else
+#define CA53_ERR_843419_SPEC \
+ " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#endif
+
#define LINK_SPEC LINUX_TARGET_LINK_SPEC \
- CA53_ERR_835769_SPEC
+ CA53_ERR_835769_SPEC \
+ CA53_ERR_843419_SPEC
#define TARGET_OS_CPP_BUILTINS() \
do \
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index fc0307e2869..266d873c6dd 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -71,6 +71,10 @@ mfix-cortex-a53-835769
Target Report Var(aarch64_fix_a53_err835769) Init(2)
Workaround for ARM Cortex-A53 Erratum number 835769
+mfix-cortex-a53-843419
+Target Report
+Workaround for ARM Cortex-A53 Erratum number 843419
+
mlittle-endian
Target Report RejectNegative InverseMask(BIG_END)
Assume target CPU is configured as little endian
diff --git a/gcc/configure b/gcc/configure
index 64d0c50c5ce..ab5b2ec3b08 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -920,6 +920,7 @@ enable_gnu_indirect_function
enable_initfini_array
enable_comdat
enable_fix_cortex_a53_835769
+enable_fix_cortex_a53_843419
with_glibc_version
enable_gnu_unique_object
enable_linker_build_id
@@ -1644,6 +1645,14 @@ Optional Features:
disable workaround for AArch64 Cortex-A53 erratum
835769 by default
+
+ --enable-fix-cortex-a53-843419
+ enable workaround for AArch64 Cortex-A53 erratum
+ 843419 by default
+ --disable-fix-cortex-a53-843419
+ disable workaround for AArch64 Cortex-A53 erratum
+ 843419 by default
+
--enable-gnu-unique-object
enable the use of the @gnu_unique_object ELF
extension on glibc systems
@@ -17936,7 +17945,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17939 "configure"
+#line 17948 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -18042,7 +18051,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 18045 "configure"
+#line 18054 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -24032,6 +24041,25 @@ if test "${enable_fix_cortex_a53_835769+set}" = set; then :
fi
+ # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
+ # Check whether --enable-fix-cortex-a53-843419 was given.
+if test "${enable_fix_cortex_a53_843419+set}" = set; then :
+ enableval=$enable_fix_cortex_a53_843419;
+ case $enableval in
+ yes)
+ tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
+ ;;
+ no)
+ ;;
+ *)
+ as_fn_error "'$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
+ 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 8fec1825302..7bf1250a6c1 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3564,6 +3564,29 @@ AS_HELP_STRING([--disable-fix-cortex-a53-835769],
esac
],
[])
+ # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
+ AC_ARG_ENABLE(fix-cortex-a53-843419,
+ [
+AS_HELP_STRING([--enable-fix-cortex-a53-843419],
+ [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
+AS_HELP_STRING([--disable-fix-cortex-a53-843419],
+ [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
+ ],
+ [
+ case $enableval in
+ yes)
+ tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
+ ;;
+ no)
+ ;;
+ *)
+ AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
+ 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 1daedff69bf..ff78c382be8 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -3769,13 +3769,24 @@ 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
+default and can be explicitly disabled 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.
+To enable a workaround for the Cortex-A53 erratum number 843419 by default
+(for all CPUs regardless of -mcpu option given) at configure time use the
+@option{--enable-fix-cortex-a53-843419} option. This workaround is applied at
+link time. Enabling the workaround will cause GCC to pass the relevant option
+to the linker. It can be explicitly disabled during compilation by passing the
+@option{-mno-fix-cortex-a53-843419} option. Conversely,
+@option{--disable-fix-cortex-a53-843419} will disable the workaround by default.
+The workaround is disabled by default if neither of
+@option{--enable-fix-cortex-a53-843419} or
+@option{--disable-fix-cortex-a53-843419} is given at configure time.
+
@html
<hr />
<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 4cd27cd010c..865817eed5b 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -480,6 +480,7 @@ Objective-C and Objective-C++ Dialects}.
-momit-leaf-frame-pointer -mno-omit-leaf-frame-pointer @gol
-mtls-dialect=desc -mtls-dialect=traditional @gol
-mfix-cortex-a53-835769 -mno-fix-cortex-a53-835769 @gol
+-mfix-cortex-a53-843419 -mno-fix-cortex-a53-843419 @gol
-march=@var{name} -mcpu=@var{name} -mtune=@var{name}}
@emph{Adapteva Epiphany Options}
@@ -11437,6 +11438,14 @@ Enable or disable the workaround for the ARM Cortex-A53 erratum number 835769.
This will involve inserting a NOP instruction between memory instructions and
64-bit integer multiply-accumulate instructions.
+@item -mfix-cortex-a53-843419
+@itemx -mno-fix-cortex-a53-843419
+@opindex mfix-cortex-a53-843419
+@opindex mno-fix-cortex-a53-843419
+Enable or disable the workaround for the ARM Cortex-A53 erratum number 843419.
+This erratum workaround is made at link time and this will only pass the
+corresponding flag to the linker.
+
@item -march=@var{name}
@opindex march
Specify the name of the target architecture, optionally suffixed by one or