| ; Options for the CRIS port of the compiler. |
| |
| ; Copyright (C) 2005-2022 Free Software Foundation, Inc. |
| ; |
| ; This file is part of GCC. |
| ; |
| ; GCC is free software; you can redistribute it and/or modify it under |
| ; the terms of the GNU General Public License as published by the Free |
| ; Software Foundation; either version 3, or (at your option) any later |
| ; version. |
| ; |
| ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
| ; WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| ; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| ; for more details. |
| ; |
| ; You should have received a copy of the GNU General Public License |
| ; along with GCC; see the file COPYING3. If not see |
| ; <http://www.gnu.org/licenses/>. |
| |
| ; TARGET_MUL_BUG: Whether or not to work around multiplication |
| ; instruction hardware bug when generating code for models where |
| ; it may be present. From the trouble report for Etrax 100 LX: |
| ; "A multiply operation may cause incorrect cache behavior |
| ; under some specific circumstances. The problem can occur if |
| ; the instruction following the multiply instruction causes a |
| ; cache miss, and multiply operand 1 (source operand) bits |
| ; [31:27] matches the logical mapping of the mode register |
| ; address (0xb0....), and bits [9:2] of operand 1 matches the |
| ; TLB register address (0x258-0x25f). There is such a mapping |
| ; in kernel mode or when the MMU is off. Normally there is no |
| ; such mapping in user mode, and the problem will therefore |
| ; probably not occur in Linux user mode programs." |
| ; |
| ; We have no sure-fire way to know from within GCC that we're |
| ; compiling a user program. For example, -fpic/PIC is used in |
| ; libgcc which is linked into the kernel. However, the |
| ; workaround option -mno-mul-bug can be safely used per-package |
| ; when compiling programs. The same goes for general user-only |
| ; libraries such as glibc, since there's no user-space |
| ; driver-like program that gets a mapping of I/O registers (all |
| ; on the same page, including the TLB registers). |
| mmul-bug-workaround |
| Target Mask(MUL_BUG) |
| Work around bug in multiplication instruction. |
| |
| ; TARGET_ETRAX4_ADD: Instruction-set additions from Etrax 4 and up. |
| ; (Just "lz".) |
| metrax4 |
| Target Mask(ETRAX4_ADD) |
| Compile for ETRAX 4 (CRIS v3). |
| |
| ; See cris_handle_option. |
| metrax100 |
| Target RejectNegative |
| Compile for ETRAX 100 (CRIS v8). |
| |
| ; See cris_handle_option. |
| mno-etrax100 |
| Target RejectNegative Undocumented |
| |
| mpdebug |
| Target Mask(PDEBUG) |
| Emit verbose debug information in assembly code. |
| |
| ; TARGET_CCINIT: Whether to use condition-codes generated by |
| ; insns other than the immediately preceding compare/test insn. |
| ; Used to check for errors in notice_update_cc. |
| mcc-init |
| Target Mask(CCINIT) |
| Do not use condition codes from normal instructions. |
| |
| ; TARGET_SIDE_EFFECT_PREFIXES: Whether to use side-effect |
| ; patterns. Used to debug the [rx=ry+i] type patterns. |
| mside-effects |
| Target RejectNegative Mask(SIDE_EFFECT_PREFIXES) Undocumented |
| |
| mno-side-effects |
| Target RejectNegative InverseMask(SIDE_EFFECT_PREFIXES) |
| Do not emit addressing modes with side-effect assignment. |
| |
| ; TARGET_STACK_ALIGN: Whether to *keep* (not force) alignment of |
| ; stack at 16 (or 32, depending on TARGET_ALIGN_BY_32) bits. |
| mstack-align |
| Target RejectNegative Mask(STACK_ALIGN) Undocumented |
| |
| mno-stack-align |
| Target RejectNegative InverseMask(STACK_ALIGN) |
| Do not tune stack alignment. |
| |
| ; TARGET_DATA_ALIGN: Whether to do alignment on individual |
| ; modifiable objects. |
| mdata-align |
| Target RejectNegative Mask(DATA_ALIGN) Undocumented |
| |
| mno-data-align |
| Target RejectNegative InverseMask(DATA_ALIGN) |
| Do not tune writable data alignment. |
| |
| ; TARGET_CONST_ALIGN: Whether to do alignment on individual |
| ; non-modifiable objects. |
| mconst-align |
| Target RejectNegative Mask(CONST_ALIGN) Undocumented |
| |
| mno-const-align |
| Target RejectNegative InverseMask(CONST_ALIGN) |
| Do not tune code and read-only data alignment. |
| |
| ; See cris_handle_option. |
| m32-bit |
| Target RejectNegative Undocumented |
| |
| ; See cris_handle_option. |
| m32bit |
| Target RejectNegative |
| Align code and data to 32 bits. |
| |
| ; See cris_handle_option. |
| m16-bit |
| Target RejectNegative Undocumented |
| |
| ; See cris_handle_option. |
| m16bit |
| Target RejectNegative Undocumented |
| |
| ; See cris_handle_option. |
| m8-bit |
| Target RejectNegative Undocumented |
| |
| ; See cris_handle_option. |
| m8bit |
| Target RejectNegative |
| Don't align items in code or data. |
| |
| ; TARGET_PROLOGUE_EPILOGUE: Whether or not to omit function |
| ; prologue and epilogue. |
| mprologue-epilogue |
| Target RejectNegative Mask(PROLOGUE_EPILOGUE) Undocumented |
| |
| mno-prologue-epilogue |
| Target RejectNegative InverseMask(PROLOGUE_EPILOGUE) |
| Do not emit function prologue or epilogue. |
| |
| ; We have to handle this m-option here since we can't wash it |
| ; off in both CC1_SPEC and CC1PLUS_SPEC. |
| |
| mbest-lib-options |
| Target RejectNegative |
| Use the most feature-enabling options allowed by other options. |
| |
| ; FIXME: The following comment relates to gcc before cris.opt. |
| ; Check if it's still valid: |
| ; We must call it "override-" since calling it "no-" will cause |
| ; gcc.cc to forget it, if there's a "later" -mbest-lib-options. |
| ; Kludgy, but needed for some multilibbed files. |
| moverride-best-lib-options |
| Target RejectNegative |
| Override -mbest-lib-options. |
| |
| mcpu= |
| Target RejectNegative Joined Undocumented Var(cris_cpu_str) |
| |
| march= |
| Target RejectNegative Joined Var(cris_cpu_str) |
| -march=ARCH Generate code for the specified chip or CPU version. |
| |
| mtune= |
| Target RejectNegative Joined Var(cris_tune_str) |
| -mtune=ARCH Tune alignment for the specified chip or CPU version. |
| |
| mmax-stackframe= |
| Target RejectNegative Joined Var(cris_max_stackframe_str) |
| -mmax-stackframe=SIZE Warn when a stackframe is larger than the specified size. |
| |
| max-stackframe= |
| Target RejectNegative Joined Undocumented Var(cris_max_stackframe_str) |
| |
| mtrap-using-break8 |
| Target Var(cris_trap_using_break8) Init(2) |
| Emit traps as \"break 8\", default for CRIS v3 and up. If disabled, calls to abort() are used. |
| |
| mtrap-unaligned-atomic |
| Target Var(cris_trap_unaligned_atomic) Init(2) |
| Emit checks causing \"break 8\" instructions to execute when applying atomic builtins on misaligned memory. |
| |
| munaligned-atomic-may-use-library |
| Target Var(cris_atomics_calling_libfunc) Init(2) |
| Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic. |
| |
| ; TARGET_SVINTO: Currently this just affects alignment. FIXME: |
| ; Redundant with TARGET_ALIGN_BY_32, or put machine stuff here? |
| ; This and the others below could just as well be variables and |
| ; TARGET_* defines in cris.h. |
| Mask(SVINTO) |
| |
| ; TARGET_ALIGN_BY_32: Say that all alignment specifications say |
| ; to prefer 32 rather than 16 bits. |
| Mask(ALIGN_BY_32) |