cris: Don't default to -mmul-bug-workaround
This flips the default for the errata handling for an old version (TL;DR: workaround: no multiply instruction last on a cache-line). Newer versions of the CRIS cpu don't have that bug. While the impact of the workaround is very marginal (coremark: less than .05% larger, less than .0005% slower) it's an irritating pseudorandom factor when assessing the impact of other changes. Also, fix a wart requiring changes to more than TARGET_DEFAULT to flip the default. People building old kernels or operating systems to run on ETRAX 100 LX are advised to pass "-mmul-bug-workaround". gcc: * config/cris/cris.h (TARGET_DEFAULT): Don't include MASK_MUL_BUG. (MUL_BUG_ASM_DEFAULT): New macro. (MAYBE_AS_NO_MUL_BUG_ABORT): Define in terms of MUL_BUG_ASM_DEFAULT. * doc/invoke.texi (CRIS Options, -mmul-bug-workaround): Adjust accordingly.
This commit is contained in:
parent
ae7e4af964
commit
4c4d0af4c9
@ -153,7 +153,9 @@ extern int cris_cpu_version;
|
||||
|
||||
#ifdef HAVE_AS_NO_MUL_BUG_ABORT_OPTION
|
||||
#define MAYBE_AS_NO_MUL_BUG_ABORT \
|
||||
"%{mno-mul-bug-workaround:-no-mul-bug-abort} "
|
||||
"%{mno-mul-bug-workaround:-no-mul-bug-abort} " \
|
||||
"%{mmul-bug-workaround:-mul-bug-abort} " \
|
||||
"%{!mmul-bug-workaround:%{!mno-mul-bug-workaround:" MUL_BUG_ASM_DEFAULT "}} "
|
||||
#else
|
||||
#define MAYBE_AS_NO_MUL_BUG_ABORT
|
||||
#endif
|
||||
@ -255,15 +257,26 @@ extern int cris_cpu_version;
|
||||
(MASK_SIDE_EFFECT_PREFIXES + MASK_STACK_ALIGN \
|
||||
+ MASK_CONST_ALIGN + MASK_DATA_ALIGN \
|
||||
+ MASK_ALIGN_BY_32 \
|
||||
+ MASK_PROLOGUE_EPILOGUE + MASK_MUL_BUG)
|
||||
+ MASK_PROLOGUE_EPILOGUE)
|
||||
# else /* 0 */
|
||||
# define TARGET_DEFAULT \
|
||||
(MASK_SIDE_EFFECT_PREFIXES + MASK_STACK_ALIGN \
|
||||
+ MASK_CONST_ALIGN + MASK_DATA_ALIGN \
|
||||
+ MASK_PROLOGUE_EPILOGUE + MASK_MUL_BUG)
|
||||
+ MASK_PROLOGUE_EPILOGUE)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Don't depend on the assembler default setting for the errata machinery;
|
||||
always pass the option to turn it on or off explicitly. But, we have to
|
||||
decide on which is the *GCC* default, and for that we should only need to
|
||||
consider what's in TARGET_DEFAULT; no other changes should be necessary. */
|
||||
|
||||
#if (TARGET_DEFAULT & MASK_MUL_BUG)
|
||||
#define MUL_BUG_ASM_DEFAULT "-mul-bug-abort"
|
||||
#else
|
||||
#define MUL_BUG_ASM_DEFAULT "-no-mul-bug-abort"
|
||||
#endif
|
||||
|
||||
/* Local, providing a default for cris_cpu_version. */
|
||||
#define CRIS_DEFAULT_CPU_VERSION TARGET_CPU_DEFAULT
|
||||
|
||||
|
@ -22268,7 +22268,7 @@ The options @option{-metrax4} and @option{-metrax100} are synonyms for
|
||||
@opindex mmul-bug-workaround
|
||||
@opindex mno-mul-bug-workaround
|
||||
Work around a bug in the @code{muls} and @code{mulu} instructions for CPU
|
||||
models where it applies. This option is active by default.
|
||||
models where it applies. This option is disabled by default.
|
||||
|
||||
@item -mpdebug
|
||||
@opindex mpdebug
|
||||
|
Loading…
Reference in New Issue
Block a user