summaryrefslogtreecommitdiff
path: root/gcc/config/cris/cris.opt
blob: d359c89481ffefd38b51d4b93639b1a9c0295280 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
; Options for the CRIS port of the compiler.

; Copyright (C) 2005-2014 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 behaviour
; 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 Report Mask(MUL_BUG)
Work around bug in multiplication instruction

; TARGET_ETRAX4_ADD: Instruction-set additions from Etrax 4 and up.
; (Just "lz".)
metrax4
Target Report Mask(ETRAX4_ADD)
Compile for ETRAX 4 (CRIS v3)

; See cris_handle_option.
metrax100
Target Report RejectNegative
Compile for ETRAX 100 (CRIS v8)

; See cris_handle_option.
mno-etrax100
Target Report RejectNegative Undocumented

mpdebug
Target Report 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 Report 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 Report RejectNegative Mask(SIDE_EFFECT_PREFIXES) Undocumented

mno-side-effects
Target Report 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 Report RejectNegative Mask(STACK_ALIGN) Undocumented

mno-stack-align
Target Report RejectNegative InverseMask(STACK_ALIGN)
Do not tune stack alignment

; TARGET_DATA_ALIGN: Whether to do alignment on individual
; modifiable objects.
mdata-align
Target Report RejectNegative Mask(DATA_ALIGN) Undocumented

mno-data-align
Target Report 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 Report RejectNegative Mask(CONST_ALIGN) Undocumented

mno-const-align
Target Report RejectNegative InverseMask(CONST_ALIGN)
Do not tune code and read-only data alignment

; See cris_handle_option.
m32-bit
Target Report RejectNegative Undocumented

; See cris_handle_option.
m32bit
Target Report RejectNegative
Align code and data to 32 bits

; See cris_handle_option.
m16-bit
Target Report RejectNegative Undocumented

; See cris_handle_option.
m16bit
Target Report RejectNegative Undocumented

; See cris_handle_option.
m8-bit
Target Report RejectNegative Undocumented

; See cris_handle_option.
m8bit
Target Report RejectNegative
Don't align items in code or data

; TARGET_PROLOGUE_EPILOGUE: Whether or not to omit function
; prologue and epilogue.
mprologue-epilogue
Target Report RejectNegative Mask(PROLOGUE_EPILOGUE) Undocumented

mno-prologue-epilogue
Target Report 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 Report 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.c to forget it, if there's a "later" -mbest-lib-options.
; Kludgy, but needed for some multilibbed files.
moverride-best-lib-options
Target Report RejectNegative
Override -mbest-lib-options

mcpu=
Target Report RejectNegative Joined Undocumented Var(cris_cpu_str)

march=
Target Report RejectNegative Joined Var(cris_cpu_str)
-march=ARCH	Generate code for the specified chip or CPU version

mtune=
Target Report RejectNegative Joined Var(cris_tune_str)
-mtune=ARCH	Tune alignment for the specified chip or CPU version

mmax-stackframe=
Target Report RejectNegative Joined Var(cris_max_stackframe_str)
-mmax-stackframe=SIZE	Warn when a stackframe is larger than the specified size

max-stackframe=
Target Report RejectNegative Joined Undocumented Var(cris_max_stackframe_str)

mtrap-using-break8
Target Report 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 Report 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 Report 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)

; TARGET_AVOID_GOTPLT is referred to in the .c and the .md so we
; need to allocate the flag and macros here.
Mask(AVOID_GOTPLT)