1 1.1 mrg ; Options for the CRIS port of the compiler. 2 1.1 mrg 3 1.12 mrg ; Copyright (C) 2005-2022 Free Software Foundation, Inc. 4 1.1 mrg ; 5 1.1 mrg ; This file is part of GCC. 6 1.1 mrg ; 7 1.1 mrg ; GCC is free software; you can redistribute it and/or modify it under 8 1.1 mrg ; the terms of the GNU General Public License as published by the Free 9 1.1 mrg ; Software Foundation; either version 3, or (at your option) any later 10 1.1 mrg ; version. 11 1.1 mrg ; 12 1.1 mrg ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY 13 1.1 mrg ; WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 1.1 mrg ; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 1.1 mrg ; for more details. 16 1.1 mrg ; 17 1.1 mrg ; You should have received a copy of the GNU General Public License 18 1.1 mrg ; along with GCC; see the file COPYING3. If not see 19 1.1 mrg ; <http://www.gnu.org/licenses/>. 20 1.1 mrg 21 1.1 mrg ; TARGET_MUL_BUG: Whether or not to work around multiplication 22 1.1 mrg ; instruction hardware bug when generating code for models where 23 1.1 mrg ; it may be present. From the trouble report for Etrax 100 LX: 24 1.6 mrg ; "A multiply operation may cause incorrect cache behavior 25 1.1 mrg ; under some specific circumstances. The problem can occur if 26 1.1 mrg ; the instruction following the multiply instruction causes a 27 1.1 mrg ; cache miss, and multiply operand 1 (source operand) bits 28 1.1 mrg ; [31:27] matches the logical mapping of the mode register 29 1.1 mrg ; address (0xb0....), and bits [9:2] of operand 1 matches the 30 1.1 mrg ; TLB register address (0x258-0x25f). There is such a mapping 31 1.1 mrg ; in kernel mode or when the MMU is off. Normally there is no 32 1.1 mrg ; such mapping in user mode, and the problem will therefore 33 1.1 mrg ; probably not occur in Linux user mode programs." 34 1.1 mrg ; 35 1.1 mrg ; We have no sure-fire way to know from within GCC that we're 36 1.1 mrg ; compiling a user program. For example, -fpic/PIC is used in 37 1.1 mrg ; libgcc which is linked into the kernel. However, the 38 1.1 mrg ; workaround option -mno-mul-bug can be safely used per-package 39 1.1 mrg ; when compiling programs. The same goes for general user-only 40 1.1 mrg ; libraries such as glibc, since there's no user-space 41 1.1 mrg ; driver-like program that gets a mapping of I/O registers (all 42 1.1 mrg ; on the same page, including the TLB registers). 43 1.1 mrg mmul-bug-workaround 44 1.12 mrg Target Mask(MUL_BUG) 45 1.6 mrg Work around bug in multiplication instruction. 46 1.1 mrg 47 1.1 mrg ; TARGET_ETRAX4_ADD: Instruction-set additions from Etrax 4 and up. 48 1.1 mrg ; (Just "lz".) 49 1.1 mrg metrax4 50 1.12 mrg Target Mask(ETRAX4_ADD) 51 1.6 mrg Compile for ETRAX 4 (CRIS v3). 52 1.1 mrg 53 1.1 mrg ; See cris_handle_option. 54 1.1 mrg metrax100 55 1.12 mrg Target RejectNegative 56 1.6 mrg Compile for ETRAX 100 (CRIS v8). 57 1.1 mrg 58 1.1 mrg ; See cris_handle_option. 59 1.1 mrg mno-etrax100 60 1.12 mrg Target RejectNegative Undocumented 61 1.1 mrg 62 1.1 mrg mpdebug 63 1.12 mrg Target Mask(PDEBUG) 64 1.6 mrg Emit verbose debug information in assembly code. 65 1.1 mrg 66 1.1 mrg ; TARGET_CCINIT: Whether to use condition-codes generated by 67 1.1 mrg ; insns other than the immediately preceding compare/test insn. 68 1.1 mrg ; Used to check for errors in notice_update_cc. 69 1.1 mrg mcc-init 70 1.12 mrg Target Mask(CCINIT) 71 1.6 mrg Do not use condition codes from normal instructions. 72 1.1 mrg 73 1.1 mrg ; TARGET_SIDE_EFFECT_PREFIXES: Whether to use side-effect 74 1.1 mrg ; patterns. Used to debug the [rx=ry+i] type patterns. 75 1.1 mrg mside-effects 76 1.12 mrg Target RejectNegative Mask(SIDE_EFFECT_PREFIXES) Undocumented 77 1.1 mrg 78 1.1 mrg mno-side-effects 79 1.12 mrg Target RejectNegative InverseMask(SIDE_EFFECT_PREFIXES) 80 1.6 mrg Do not emit addressing modes with side-effect assignment. 81 1.1 mrg 82 1.1 mrg ; TARGET_STACK_ALIGN: Whether to *keep* (not force) alignment of 83 1.1 mrg ; stack at 16 (or 32, depending on TARGET_ALIGN_BY_32) bits. 84 1.1 mrg mstack-align 85 1.12 mrg Target RejectNegative Mask(STACK_ALIGN) Undocumented 86 1.1 mrg 87 1.1 mrg mno-stack-align 88 1.12 mrg Target RejectNegative InverseMask(STACK_ALIGN) 89 1.6 mrg Do not tune stack alignment. 90 1.1 mrg 91 1.1 mrg ; TARGET_DATA_ALIGN: Whether to do alignment on individual 92 1.1 mrg ; modifiable objects. 93 1.1 mrg mdata-align 94 1.12 mrg Target RejectNegative Mask(DATA_ALIGN) Undocumented 95 1.1 mrg 96 1.1 mrg mno-data-align 97 1.12 mrg Target RejectNegative InverseMask(DATA_ALIGN) 98 1.6 mrg Do not tune writable data alignment. 99 1.1 mrg 100 1.1 mrg ; TARGET_CONST_ALIGN: Whether to do alignment on individual 101 1.1 mrg ; non-modifiable objects. 102 1.1 mrg mconst-align 103 1.12 mrg Target RejectNegative Mask(CONST_ALIGN) Undocumented 104 1.1 mrg 105 1.1 mrg mno-const-align 106 1.12 mrg Target RejectNegative InverseMask(CONST_ALIGN) 107 1.6 mrg Do not tune code and read-only data alignment. 108 1.1 mrg 109 1.1 mrg ; See cris_handle_option. 110 1.1 mrg m32-bit 111 1.12 mrg Target RejectNegative Undocumented 112 1.1 mrg 113 1.1 mrg ; See cris_handle_option. 114 1.1 mrg m32bit 115 1.12 mrg Target RejectNegative 116 1.6 mrg Align code and data to 32 bits. 117 1.1 mrg 118 1.1 mrg ; See cris_handle_option. 119 1.1 mrg m16-bit 120 1.12 mrg Target RejectNegative Undocumented 121 1.1 mrg 122 1.1 mrg ; See cris_handle_option. 123 1.1 mrg m16bit 124 1.12 mrg Target RejectNegative Undocumented 125 1.1 mrg 126 1.1 mrg ; See cris_handle_option. 127 1.1 mrg m8-bit 128 1.12 mrg Target RejectNegative Undocumented 129 1.1 mrg 130 1.1 mrg ; See cris_handle_option. 131 1.1 mrg m8bit 132 1.12 mrg Target RejectNegative 133 1.6 mrg Don't align items in code or data. 134 1.1 mrg 135 1.1 mrg ; TARGET_PROLOGUE_EPILOGUE: Whether or not to omit function 136 1.1 mrg ; prologue and epilogue. 137 1.1 mrg mprologue-epilogue 138 1.12 mrg Target RejectNegative Mask(PROLOGUE_EPILOGUE) Undocumented 139 1.1 mrg 140 1.1 mrg mno-prologue-epilogue 141 1.12 mrg Target RejectNegative InverseMask(PROLOGUE_EPILOGUE) 142 1.6 mrg Do not emit function prologue or epilogue. 143 1.1 mrg 144 1.1 mrg ; We have to handle this m-option here since we can't wash it 145 1.1 mrg ; off in both CC1_SPEC and CC1PLUS_SPEC. 146 1.1 mrg 147 1.1 mrg mbest-lib-options 148 1.12 mrg Target RejectNegative 149 1.6 mrg Use the most feature-enabling options allowed by other options. 150 1.1 mrg 151 1.1 mrg ; FIXME: The following comment relates to gcc before cris.opt. 152 1.3 mrg ; Check if it's still valid: 153 1.1 mrg ; We must call it "override-" since calling it "no-" will cause 154 1.12 mrg ; gcc.cc to forget it, if there's a "later" -mbest-lib-options. 155 1.1 mrg ; Kludgy, but needed for some multilibbed files. 156 1.1 mrg moverride-best-lib-options 157 1.12 mrg Target RejectNegative 158 1.6 mrg Override -mbest-lib-options. 159 1.1 mrg 160 1.1 mrg mcpu= 161 1.12 mrg Target RejectNegative Joined Undocumented Var(cris_cpu_str) 162 1.1 mrg 163 1.1 mrg march= 164 1.12 mrg Target RejectNegative Joined Var(cris_cpu_str) 165 1.6 mrg -march=ARCH Generate code for the specified chip or CPU version. 166 1.1 mrg 167 1.1 mrg mtune= 168 1.12 mrg Target RejectNegative Joined Var(cris_tune_str) 169 1.6 mrg -mtune=ARCH Tune alignment for the specified chip or CPU version. 170 1.1 mrg 171 1.1 mrg mmax-stackframe= 172 1.12 mrg Target RejectNegative Joined Var(cris_max_stackframe_str) 173 1.6 mrg -mmax-stackframe=SIZE Warn when a stackframe is larger than the specified size. 174 1.1 mrg 175 1.1 mrg max-stackframe= 176 1.12 mrg Target RejectNegative Joined Undocumented Var(cris_max_stackframe_str) 177 1.1 mrg 178 1.3 mrg mtrap-using-break8 179 1.12 mrg Target Var(cris_trap_using_break8) Init(2) 180 1.3 mrg Emit traps as \"break 8\", default for CRIS v3 and up. If disabled, calls to abort() are used. 181 1.3 mrg 182 1.3 mrg mtrap-unaligned-atomic 183 1.12 mrg Target Var(cris_trap_unaligned_atomic) Init(2) 184 1.6 mrg Emit checks causing \"break 8\" instructions to execute when applying atomic builtins on misaligned memory. 185 1.3 mrg 186 1.3 mrg munaligned-atomic-may-use-library 187 1.12 mrg Target Var(cris_atomics_calling_libfunc) Init(2) 188 1.3 mrg Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic. 189 1.3 mrg 190 1.1 mrg ; TARGET_SVINTO: Currently this just affects alignment. FIXME: 191 1.1 mrg ; Redundant with TARGET_ALIGN_BY_32, or put machine stuff here? 192 1.1 mrg ; This and the others below could just as well be variables and 193 1.1 mrg ; TARGET_* defines in cris.h. 194 1.1 mrg Mask(SVINTO) 195 1.1 mrg 196 1.1 mrg ; TARGET_ALIGN_BY_32: Say that all alignment specifications say 197 1.1 mrg ; to prefer 32 rather than 16 bits. 198 1.1 mrg Mask(ALIGN_BY_32) 199