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