aarch64-elf-raw.h (CA53_ERR_843419_SPEC): Define.

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.

From-SVN: r222797
This commit is contained in:
Yvan Roux 2015-05-05 09:31:11 +00:00 committed by Yvan Roux
parent a42de35f0d
commit bf05ef76d9
8 changed files with 112 additions and 5 deletions

View file

@ -1,3 +1,17 @@
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-05 Uros Bizjak <ubizjak@gmail.com>
PR target/65871

View file

@ -35,10 +35,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 */

View file

@ -49,8 +49,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 GNU_USER_TARGET_MATHFILE_SPEC \
"%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"

View file

@ -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

32
gcc/configure vendored
View file

@ -923,6 +923,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
@ -1648,6 +1649,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
@ -18153,7 +18162,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 18156 "configure"
#line 18165 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -18259,7 +18268,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 18262 "configure"
#line 18271 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -24100,6 +24109,25 @@ if test "${enable_fix_cortex_a53_835769+set}" = set; then :
esac
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
;;

View file

@ -3592,6 +3592,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.

View file

@ -3408,13 +3408,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 />
@end html

View file

@ -512,6 +512,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}
@ -12328,6 +12329,14 @@ Enable or disable the workaround for the ARM Cortex-A53 erratum number 835769.
This involves 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