Commit | Line | Data |
---|---|---|
6c95a37f | 1 | /* cris-opc.c -- Table of opcodes for the CRIS processor. |
060d22b0 | 2 | Copyright 2000 Free Software Foundation, Inc. |
6c95a37f HPN |
3 | Contributed by Axis Communications AB, Lund, Sweden. |
4 | Originally written for GAS 1.38.1 by Mikael Asker. | |
5 | Reorganized by Hans-Peter Nilsson. | |
6 | ||
7 | This file is part of GAS, GDB and the GNU binutils. | |
8 | ||
9 | GAS, GDB, and GNU binutils is free software; you can redistribute it | |
10 | and/or modify it under the terms of the GNU General Public License as | |
11 | published by the Free Software Foundation; either version 2, or (at your | |
12 | option) any later version. | |
13 | ||
14 | GAS, GDB, and GNU binutils are distributed in the hope that they will be | |
15 | useful, but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | GNU General Public License for more details. | |
18 | ||
19 | You should have received a copy of the GNU General Public License | |
20 | along with this program; if not, write to the Free Software | |
21 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
22 | ||
23 | #include "opcode/cris.h" | |
24 | ||
25 | #ifndef NULL | |
26 | #define NULL (0) | |
27 | #endif | |
28 | ||
29 | const struct cris_spec_reg | |
30 | cris_spec_regs[] = | |
31 | { | |
32 | {"p0", 0, 1, 0, NULL}, | |
33 | {"vr", 1, 1, 0, NULL}, | |
34 | {"p1", 1, 1, 0, NULL}, | |
35 | {"p2", 2, 1, cris_ver_warning, NULL}, | |
36 | {"p3", 3, 1, cris_ver_warning, NULL}, | |
37 | {"p4", 4, 2, 0, NULL}, | |
38 | {"ccr", 5, 2, 0, NULL}, | |
39 | {"p5", 5, 2, 0, NULL}, | |
40 | {"dcr0",6, 2, cris_ver_v0_3, NULL}, | |
41 | {"p6", 6, 2, cris_ver_v0_3, NULL}, | |
42 | {"dcr1/mof", 7, 4, cris_ver_v10p, | |
43 | "Register `dcr1/mof' with ambiguous size specified. Guessing 4 bytes"}, | |
44 | {"dcr1/mof", 7, 2, cris_ver_v0_3, | |
45 | "Register `dcr1/mof' with ambiguous size specified. Guessing 2 bytes"}, | |
46 | {"mof", 7, 4, cris_ver_v10p, NULL}, | |
47 | {"dcr1",7, 2, cris_ver_v0_3, NULL}, | |
48 | {"p7", 7, 4, cris_ver_v10p, NULL}, | |
49 | {"p7", 7, 2, cris_ver_v0_3, NULL}, | |
50 | {"p8", 8, 4, 0, NULL}, | |
51 | {"ibr", 9, 4, 0, NULL}, | |
52 | {"p9", 9, 4, 0, NULL}, | |
53 | {"irp", 10, 4, 0, NULL}, | |
54 | {"p10", 10, 4, 0, NULL}, | |
55 | {"srp", 11, 4, 0, NULL}, | |
56 | {"p11", 11, 4, 0, NULL}, | |
57 | /* For disassembly use only. Accept at assembly with a warning. */ | |
58 | {"bar/dtp0", 12, 4, cris_ver_warning, | |
59 | "Ambiguous register `bar/dtp0' specified"}, | |
60 | {"bar", 12, 4, cris_ver_v8p, NULL}, | |
61 | {"dtp0",12, 4, cris_ver_v0_3, NULL}, | |
62 | {"p12", 12, 4, 0, NULL}, | |
63 | /* For disassembly use only. Accept at assembly with a warning. */ | |
64 | {"dccr/dtp1",13, 4, cris_ver_warning, | |
65 | "Ambiguous register `dccr/dtp1' specified"}, | |
66 | {"dccr",13, 4, cris_ver_v8p, NULL}, | |
67 | {"dtp1",13, 4, cris_ver_v0_3, NULL}, | |
68 | {"p13", 13, 4, 0, NULL}, | |
69 | {"brp", 14, 4, cris_ver_v3p, NULL}, | |
70 | {"p14", 14, 4, cris_ver_v3p, NULL}, | |
71 | {"usp", 15, 4, cris_ver_v10p, NULL}, | |
72 | {"p15", 15, 4, cris_ver_v10p, NULL}, | |
22f3fc43 | 73 | {NULL, 0, 0, cris_ver_version_all, NULL} |
6c95a37f HPN |
74 | }; |
75 | ||
76 | /* All CRIS opcodes are 16 bits. | |
77 | ||
78 | - The match component is a mask saying which bits must match a | |
79 | particular opcode in order for an instruction to be an instance | |
80 | of that opcode. | |
81 | ||
82 | - The args component is a string containing characters symbolically | |
83 | matching the operands of an instruction. Used for both assembly | |
84 | and disassembly. | |
85 | ||
86 | Operand-matching characters: | |
87 | B Not really an operand. It causes a "BDAP -size,SP" prefix to be | |
88 | output for the PUSH alias-instructions and recognizes a | |
89 | push-prefix at disassembly. Must be followed by a R or P letter. | |
90 | ! Non-match pattern, will not match if there's a prefix insn. | |
91 | b Non-matching operand, used for branches with 16-bit | |
92 | displacement. Only recognized by the disassembler. | |
93 | c 5-bit unsigned immediate in bits <4:0>. | |
94 | C 4-bit unsigned immediate in bits <3:0>. | |
95 | D General register in bits <15:12> and <3:0>. | |
96 | f List of flags in bits <15:12> and <3:0>. | |
97 | i 6-bit signed immediate in bits <5:0>. | |
98 | I 6-bit unsigned immediate in bits <5:0>. | |
99 | M Size modifier (B, W or D) for CLEAR instructions. | |
100 | m Size modifier (B, W or D) in bits <5:4> | |
101 | o [-128..127] word offset in bits <7:1> and <0>. Used by 8-bit | |
102 | branch instructions. | |
103 | O [-128..127] offset in bits <7:0>. Also matches a comma and a | |
104 | general register after the expression. Used only for the BDAP | |
105 | prefix insn. | |
106 | P Special register in bits <15:12>. | |
107 | p Indicates that the insn is a prefix insn. Must be first | |
108 | character. | |
109 | R General register in bits <15:12>. | |
110 | r General register in bits <3:0>. | |
111 | S Source operand in bit <10> and a prefix; a 3-operand prefix | |
112 | without side-effect. | |
113 | s Source operand in bits <10> and <3:0>, optionally with a | |
114 | side-effect prefix. | |
115 | x Register-dot-modifier, for example "r5.w" in bits <15:12> and <5:4>. | |
116 | y Like 's' but do not allow an integer at assembly. | |
117 | z Size modifier (B or W) in bit <4>. */ | |
118 | ||
119 | ||
120 | /* Please note the order of the opcodes in this table is significant. | |
121 | The assembler requires that all instances of the same mnemonic must | |
122 | be consecutive. If they aren't, the assembler might not recognize | |
123 | them, or may indicate and internal error. | |
124 | ||
125 | The disassembler should not normally care about the order of the | |
126 | opcodes, but will prefer an earlier alternative if the "match-score" | |
127 | (see cris-dis.c) is computed as equal. | |
128 | ||
129 | It should not be significant for proper execution that this table is | |
130 | in alphabetical order, but please follow that convention for an easy | |
131 | overview. */ | |
132 | ||
133 | const struct cris_opcode | |
134 | cris_opcodes[] = | |
135 | { | |
136 | {"abs", 0x06B0, 0x0940, "r,R", 0, SIZE_NONE, 0, | |
137 | cris_abs_op}, | |
138 | ||
139 | {"add", 0x0600, 0x09c0, "m r,R", 0, SIZE_NONE, 0, | |
140 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
141 | ||
142 | {"add", 0x0A00, 0x01c0, "m s,R", 0, SIZE_FIELD, 0, | |
143 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
144 | ||
145 | {"add", 0x0A00, 0x01c0, "m S,D", 0, SIZE_NONE, 0, | |
146 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
147 | ||
148 | {"add", 0x0a00, 0x05c0, "m S,R,r", 0, SIZE_NONE, 0, | |
149 | cris_three_operand_add_sub_cmp_and_or_op}, | |
150 | ||
151 | {"addi", 0x0500, 0x0Ac0, "x,r", 0, SIZE_NONE, 0, | |
152 | cris_addi_op}, | |
153 | ||
154 | {"addq", 0x0200, 0x0Dc0, "I,R", 0, SIZE_NONE, 0, | |
155 | cris_quick_mode_add_sub_op}, | |
156 | ||
157 | {"adds", 0x0420, 0x0Bc0, "z r,R", 0, SIZE_NONE, 0, | |
158 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
159 | ||
160 | {"adds", 0x0820, 0x03c0, "z s,R", 0, SIZE_FIELD, 0, | |
161 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
162 | ||
163 | {"adds", 0x0820, 0x03c0, "z S,D", 0, SIZE_NONE, 0, | |
164 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
165 | ||
166 | {"adds", 0x0820, 0x07c0, "z S,R,r", 0, SIZE_NONE, 0, | |
167 | cris_three_operand_add_sub_cmp_and_or_op}, | |
168 | ||
169 | {"addu", 0x0400, 0x0be0, "z r,R", 0, SIZE_NONE, 0, | |
170 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
171 | ||
172 | {"addu", 0x0800, 0x03e0, "z s,R", 0, SIZE_FIELD, 0, | |
173 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
174 | ||
175 | {"addu", 0x0800, 0x03e0, "z S,D", 0, SIZE_NONE, 0, | |
176 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
177 | ||
178 | {"addu", 0x0800, 0x07e0, "z S,R,r", 0, SIZE_NONE, 0, | |
179 | cris_three_operand_add_sub_cmp_and_or_op}, | |
180 | ||
181 | {"and", 0x0700, 0x08C0, "m r,R", 0, SIZE_NONE, 0, | |
182 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
183 | ||
184 | {"and", 0x0B00, 0x00C0, "m s,R", 0, SIZE_FIELD, 0, | |
185 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
186 | ||
187 | {"and", 0x0B00, 0x00C0, "m S,D", 0, SIZE_NONE, 0, | |
188 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
189 | ||
190 | {"and", 0x0B00, 0x04C0, "m S,R,r", 0, SIZE_NONE, 0, | |
191 | cris_three_operand_add_sub_cmp_and_or_op}, | |
192 | ||
193 | {"andq", 0x0300, 0x0CC0, "i,R", 0, SIZE_NONE, 0, | |
194 | cris_quick_mode_and_cmp_move_or_op}, | |
195 | ||
196 | {"asr", 0x0780, 0x0840, "m r,R", 0, SIZE_NONE, 0, | |
197 | cris_asr_op}, | |
198 | ||
199 | {"asrq", 0x03a0, 0x0c40, "c,R", 0, SIZE_NONE, 0, | |
200 | cris_asrq_op}, | |
201 | ||
202 | {"ax", 0x15B0, 0xEA4F, "", 0, SIZE_NONE, 0, | |
203 | cris_ax_ei_setf_op}, | |
204 | ||
205 | /* FIXME: Should use branch #defines. */ | |
206 | {"b", 0x0dff, 0x0200, "b", 1, SIZE_NONE, 0, | |
207 | cris_sixteen_bit_offset_branch_op}, | |
208 | ||
209 | {"ba", | |
210 | BA_QUICK_OPCODE, | |
211 | 0x0F00+(0xF-CC_A)*0x1000, "o", 1, SIZE_NONE, 0, | |
212 | cris_eight_bit_offset_branch_op}, | |
213 | ||
214 | {"bcc", | |
215 | BRANCH_QUICK_OPCODE+CC_CC*0x1000, | |
216 | 0x0f00+(0xF-CC_CC)*0x1000, "o", 1, SIZE_NONE, 0, | |
217 | cris_eight_bit_offset_branch_op}, | |
218 | ||
219 | {"bcs", | |
220 | BRANCH_QUICK_OPCODE+CC_CS*0x1000, | |
221 | 0x0f00+(0xF-CC_CS)*0x1000, "o", 1, SIZE_NONE, 0, | |
222 | cris_eight_bit_offset_branch_op}, | |
223 | ||
224 | {"bdap", | |
225 | BDAP_INDIR_OPCODE, BDAP_INDIR_Z_BITS, "pm s,R", 0, SIZE_FIELD, 0, | |
226 | cris_bdap_prefix}, | |
227 | ||
228 | {"bdap", | |
229 | BDAP_QUICK_OPCODE, BDAP_QUICK_Z_BITS, "pO", 0, SIZE_NONE, 0, | |
230 | cris_quick_mode_bdap_prefix}, | |
231 | ||
232 | {"beq", | |
233 | BRANCH_QUICK_OPCODE+CC_EQ*0x1000, | |
234 | 0x0f00+(0xF-CC_EQ)*0x1000, "o", 1, SIZE_NONE, 0, | |
235 | cris_eight_bit_offset_branch_op}, | |
236 | ||
237 | /* This is deliberately put before "bext" to trump it, even though not | |
238 | in alphabetical order. */ | |
239 | {"bwf", | |
240 | BRANCH_QUICK_OPCODE+CC_EXT*0x1000, | |
241 | 0x0f00+(0xF-CC_EXT)*0x1000, "o", 1, SIZE_NONE, | |
242 | cris_ver_v10p, | |
243 | cris_eight_bit_offset_branch_op}, | |
244 | ||
245 | {"bext", | |
246 | BRANCH_QUICK_OPCODE+CC_EXT*0x1000, | |
247 | 0x0f00+(0xF-CC_EXT)*0x1000, "o", 1, SIZE_NONE, | |
248 | cris_ver_v0_3, | |
249 | cris_eight_bit_offset_branch_op}, | |
250 | ||
251 | {"bge", | |
252 | BRANCH_QUICK_OPCODE+CC_GE*0x1000, | |
253 | 0x0f00+(0xF-CC_GE)*0x1000, "o", 1, SIZE_NONE, 0, | |
254 | cris_eight_bit_offset_branch_op}, | |
255 | ||
256 | {"bgt", | |
257 | BRANCH_QUICK_OPCODE+CC_GT*0x1000, | |
258 | 0x0f00+(0xF-CC_GT)*0x1000, "o", 1, SIZE_NONE, 0, | |
259 | cris_eight_bit_offset_branch_op}, | |
260 | ||
261 | {"bhi", | |
262 | BRANCH_QUICK_OPCODE+CC_HI*0x1000, | |
263 | 0x0f00+(0xF-CC_HI)*0x1000, "o", 1, SIZE_NONE, 0, | |
264 | cris_eight_bit_offset_branch_op}, | |
265 | ||
266 | {"bhs", | |
267 | BRANCH_QUICK_OPCODE+CC_HS*0x1000, | |
268 | 0x0f00+(0xF-CC_HS)*0x1000, "o", 1, SIZE_NONE, 0, | |
269 | cris_eight_bit_offset_branch_op}, | |
270 | ||
271 | {"biap", BIAP_OPCODE, BIAP_Z_BITS, "pm r,R", 0, SIZE_NONE, 0, | |
272 | cris_biap_prefix}, | |
273 | ||
274 | {"ble", | |
275 | BRANCH_QUICK_OPCODE+CC_LE*0x1000, | |
276 | 0x0f00+(0xF-CC_LE)*0x1000, "o", 1, SIZE_NONE, 0, | |
277 | cris_eight_bit_offset_branch_op}, | |
278 | ||
279 | {"blo", | |
280 | BRANCH_QUICK_OPCODE+CC_LO*0x1000, | |
281 | 0x0f00+(0xF-CC_LO)*0x1000, "o", 1, SIZE_NONE, 0, | |
282 | cris_eight_bit_offset_branch_op}, | |
283 | ||
284 | {"bls", | |
285 | BRANCH_QUICK_OPCODE+CC_LS*0x1000, | |
286 | 0x0f00+(0xF-CC_LS)*0x1000, "o", 1, SIZE_NONE, 0, | |
287 | cris_eight_bit_offset_branch_op}, | |
288 | ||
289 | {"blt", | |
290 | BRANCH_QUICK_OPCODE+CC_LT*0x1000, | |
291 | 0x0f00+(0xF-CC_LT)*0x1000, "o", 1, SIZE_NONE, 0, | |
292 | cris_eight_bit_offset_branch_op}, | |
293 | ||
294 | {"bmi", | |
295 | BRANCH_QUICK_OPCODE+CC_MI*0x1000, | |
296 | 0x0f00+(0xF-CC_MI)*0x1000, "o", 1, SIZE_NONE, 0, | |
297 | cris_eight_bit_offset_branch_op}, | |
298 | ||
299 | {"bmod", 0x0ab0, 0x0140, "s,R", 0, SIZE_FIX_32, | |
300 | cris_ver_sim, | |
301 | cris_not_implemented_op}, | |
302 | ||
303 | {"bmod", 0x0ab0, 0x0140, "S,D", 0, SIZE_NONE, | |
304 | cris_ver_sim, | |
305 | cris_not_implemented_op}, | |
306 | ||
307 | {"bmod", 0x0ab0, 0x0540, "S,R,r", 0, SIZE_NONE, | |
308 | cris_ver_sim, | |
309 | cris_not_implemented_op}, | |
310 | ||
311 | {"bne", | |
312 | BRANCH_QUICK_OPCODE+CC_NE*0x1000, | |
313 | 0x0f00+(0xF-CC_NE)*0x1000, "o", 1, SIZE_NONE, 0, | |
314 | cris_eight_bit_offset_branch_op}, | |
315 | ||
316 | {"bound", 0x05c0, 0x0A00, "m r,R", 0, SIZE_NONE, 0, | |
317 | cris_two_operand_bound_op}, | |
318 | {"bound", 0x09c0, 0x0200, "m s,R", 0, SIZE_FIELD, 0, | |
319 | cris_two_operand_bound_op}, | |
320 | {"bound", 0x09c0, 0x0200, "m S,D", 0, SIZE_NONE, 0, | |
321 | cris_two_operand_bound_op}, | |
322 | {"bound", 0x09c0, 0x0600, "m S,R,r", 0, SIZE_NONE, 0, | |
323 | cris_three_operand_bound_op}, | |
324 | {"bpl", | |
325 | BRANCH_QUICK_OPCODE+CC_PL*0x1000, | |
326 | 0x0f00+(0xF-CC_PL)*0x1000, "o", 1, SIZE_NONE, 0, | |
327 | cris_eight_bit_offset_branch_op}, | |
328 | ||
329 | {"break", 0xe930, 0x16c0, "C", 0, SIZE_NONE, | |
330 | cris_ver_v3p, | |
331 | cris_break_op}, | |
332 | ||
333 | {"bstore", 0x0af0, 0x0100, "s,R", 0, SIZE_FIX_32, | |
334 | cris_ver_warning, | |
335 | cris_not_implemented_op}, | |
336 | ||
337 | {"bstore", 0x0af0, 0x0100, "S,D", 0, SIZE_NONE, | |
338 | cris_ver_warning, | |
339 | cris_not_implemented_op}, | |
340 | ||
341 | {"bstore", 0x0af0, 0x0500, "S,R,r", 0, SIZE_NONE, | |
342 | cris_ver_warning, | |
343 | cris_not_implemented_op}, | |
344 | ||
345 | {"btst", 0x04F0, 0x0B00, "r,R", 0, SIZE_NONE, 0, | |
346 | cris_btst_nop_op}, | |
347 | {"btstq", 0x0380, 0x0C60, "c,R", 0, SIZE_NONE, 0, | |
348 | cris_btst_nop_op}, | |
349 | {"bvc", | |
350 | BRANCH_QUICK_OPCODE+CC_VC*0x1000, | |
351 | 0x0f00+(0xF-CC_VC)*0x1000, "o", 1, SIZE_NONE, 0, | |
352 | cris_eight_bit_offset_branch_op}, | |
353 | ||
354 | {"bvs", | |
355 | BRANCH_QUICK_OPCODE+CC_VS*0x1000, | |
356 | 0x0f00+(0xF-CC_VS)*0x1000, "o", 1, SIZE_NONE, 0, | |
357 | cris_eight_bit_offset_branch_op}, | |
358 | ||
359 | {"clear", 0x0670, 0x3980, "M r", 0, SIZE_NONE, 0, | |
360 | cris_reg_mode_clear_op}, | |
361 | ||
362 | {"clear", 0x0A70, 0x3180, "M y", 0, SIZE_NONE, 0, | |
363 | cris_none_reg_mode_clear_test_op}, | |
364 | ||
365 | {"clear", 0x0A70, 0x3180, "M S", 0, SIZE_NONE, 0, | |
366 | cris_none_reg_mode_clear_test_op}, | |
367 | ||
368 | {"clearf", 0x05F0, 0x0A00, "f", 0, SIZE_NONE, 0, | |
369 | cris_clearf_di_op}, | |
370 | ||
371 | {"cmp", 0x06C0, 0x0900, "m r,R", 0, SIZE_NONE, 0, | |
372 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
373 | ||
374 | {"cmp", 0x0Ac0, 0x0100, "m s,R", 0, SIZE_FIELD, 0, | |
375 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
376 | ||
377 | {"cmp", 0x0Ac0, 0x0100, "m S,D", 0, SIZE_NONE, 0, | |
378 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
379 | ||
380 | {"cmpq", 0x02C0, 0x0D00, "i,R", 0, SIZE_NONE, 0, | |
381 | cris_quick_mode_and_cmp_move_or_op}, | |
382 | ||
383 | {"cmps", 0x08e0, 0x0300, "z s,R", 0, SIZE_FIELD, 0, | |
384 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
385 | ||
386 | {"cmps", 0x08e0, 0x0300, "z S,D", 0, SIZE_NONE, 0, | |
387 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
388 | ||
389 | {"cmpu", 0x08c0, 0x0320, "z s,R" , 0, SIZE_FIELD, 0, | |
390 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
391 | ||
392 | {"cmpu", 0x08c0, 0x0320, "z S,D", 0, SIZE_NONE, 0, | |
393 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
394 | ||
395 | {"di", 0x25F0, 0xDA0F, "", 0, SIZE_NONE, 0, | |
396 | cris_clearf_di_op}, | |
397 | ||
398 | {"dip", DIP_OPCODE, DIP_Z_BITS, "ps", 0, SIZE_FIX_32, 0, | |
399 | cris_dip_prefix}, | |
400 | ||
401 | {"div", 0x0980, 0x0640, "m R,r", 0, SIZE_FIELD, 0, | |
402 | cris_not_implemented_op}, | |
403 | ||
404 | {"dstep", 0x06f0, 0x0900, "r,R", 0, SIZE_NONE, 0, | |
405 | cris_dstep_logshift_mstep_neg_not_op}, | |
406 | ||
407 | {"ei", 0x25B0, 0xDA4F, "", 0, SIZE_NONE, 0, | |
408 | cris_ax_ei_setf_op}, | |
409 | ||
410 | {"jbrc", 0x69b0, 0x9640, "r", 0, SIZE_NONE, | |
411 | cris_ver_v8p, | |
412 | cris_reg_mode_jump_op}, | |
413 | ||
414 | {"jbrc", 0x6930, 0x92c0, "s", 0, SIZE_FIX_32, | |
415 | cris_ver_v8p, | |
416 | cris_none_reg_mode_jump_op}, | |
417 | ||
418 | {"jbrc", 0x6930, 0x92c0, "S", 0, SIZE_NONE, | |
419 | cris_ver_v8p, | |
420 | cris_none_reg_mode_jump_op}, | |
421 | ||
422 | {"jir", 0xA9b0, 0x5640, "r", 0, SIZE_NONE, 0, | |
423 | cris_reg_mode_jump_op}, | |
424 | ||
425 | {"jir", 0xA930, 0x52c0, "s", 0, SIZE_FIX_32, 0, | |
426 | cris_none_reg_mode_jump_op}, | |
427 | ||
428 | {"jir", 0xA930, 0x52c0, "S", 0, SIZE_NONE, 0, | |
429 | cris_none_reg_mode_jump_op}, | |
430 | ||
431 | {"jirc", 0x29b0, 0xd640, "r", 0, SIZE_NONE, | |
432 | cris_ver_v8p, | |
433 | cris_reg_mode_jump_op}, | |
434 | ||
435 | {"jirc", 0x2930, 0xd2c0, "s", 0, SIZE_FIX_32, | |
436 | cris_ver_v8p, | |
437 | cris_none_reg_mode_jump_op}, | |
438 | ||
439 | {"jirc", 0x2930, 0xd2c0, "S", 0, SIZE_NONE, | |
440 | cris_ver_v8p, | |
441 | cris_none_reg_mode_jump_op}, | |
442 | ||
443 | {"jsr", 0xB9b0, 0x4640, "r", 0, SIZE_NONE, 0, | |
444 | cris_reg_mode_jump_op}, | |
445 | ||
446 | {"jsr", 0xB930, 0x42c0, "s", 0, SIZE_FIX_32, 0, | |
447 | cris_none_reg_mode_jump_op}, | |
448 | ||
449 | {"jsr", 0xB930, 0x42c0, "S", 0, SIZE_NONE, 0, | |
450 | cris_none_reg_mode_jump_op}, | |
451 | ||
452 | {"jsrc", 0x39b0, 0xc640, "r", 0, SIZE_NONE, | |
453 | cris_ver_v8p, | |
454 | cris_reg_mode_jump_op}, | |
455 | ||
456 | {"jsrc", 0x3930, 0xc2c0, "s", 0, SIZE_FIX_32, | |
457 | cris_ver_v8p, | |
458 | cris_none_reg_mode_jump_op}, | |
459 | ||
460 | {"jsrc", 0x3930, 0xc2c0, "S", 0, SIZE_NONE, | |
461 | cris_ver_v8p, | |
462 | cris_none_reg_mode_jump_op}, | |
463 | ||
464 | {"jump", 0x09b0, 0xF640, "r", 0, SIZE_NONE, 0, | |
465 | cris_reg_mode_jump_op}, | |
466 | ||
467 | {"jump", | |
468 | JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS, "s", 0, SIZE_FIX_32, 0, | |
469 | cris_none_reg_mode_jump_op}, | |
470 | ||
471 | {"jump", | |
472 | JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS, "S", 0, SIZE_NONE, 0, | |
473 | cris_none_reg_mode_jump_op}, | |
474 | ||
475 | {"jmpu", 0x8930, 0x72c0, "s", 0, SIZE_FIX_32, | |
476 | cris_ver_v10p, | |
477 | cris_none_reg_mode_jump_op}, | |
478 | ||
479 | {"jmpu", 0x8930, 0x72c0, "S", 0, SIZE_NONE, | |
480 | cris_ver_v10p, | |
481 | cris_none_reg_mode_jump_op}, | |
482 | ||
483 | {"lsl", 0x04C0, 0x0B00, "m r,R", 0, SIZE_NONE, 0, | |
484 | cris_dstep_logshift_mstep_neg_not_op}, | |
485 | ||
486 | {"lslq", 0x03c0, 0x0C20, "c,R", 0, SIZE_NONE, 0, | |
487 | cris_dstep_logshift_mstep_neg_not_op}, | |
488 | ||
489 | {"lsr", 0x07C0, 0x0800, "m r,R", 0, SIZE_NONE, 0, | |
490 | cris_dstep_logshift_mstep_neg_not_op}, | |
491 | ||
492 | {"lsrq", 0x03e0, 0x0C00, "c,R", 0, SIZE_NONE, 0, | |
493 | cris_dstep_logshift_mstep_neg_not_op}, | |
494 | ||
495 | {"lz", 0x0730, 0x08C0, "r,R", 0, SIZE_NONE, | |
496 | cris_ver_v3p, | |
497 | cris_not_implemented_op}, | |
498 | ||
499 | {"move", 0x0640, 0x0980, "m r,R", 0, SIZE_NONE, 0, | |
500 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
501 | ||
502 | {"move", 0x0630, 0x09c0, "r,P", 0, SIZE_NONE, 0, | |
503 | cris_move_to_preg_op}, | |
504 | ||
505 | {"move", 0x0670, 0x0980, "P,r", 0, SIZE_NONE, 0, | |
506 | cris_reg_mode_move_from_preg_op}, | |
507 | ||
508 | {"move", 0x0BC0, 0x0000, "m R,y", 0, SIZE_FIELD, 0, | |
509 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
510 | ||
511 | {"move", 0x0BC0, 0x0000, "m D,S", 0, SIZE_NONE, 0, | |
512 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
513 | ||
514 | {"move", 0x0A40, 0x0180, "m s,R", 0, SIZE_FIELD, 0, | |
515 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
516 | ||
517 | {"move", 0x0A40, 0x0180, "m S,D", 0, SIZE_NONE, 0, | |
518 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
519 | ||
520 | {"move", 0x0A30, 0x01c0, "s,P", 0, SIZE_SPEC_REG, 0, | |
521 | cris_move_to_preg_op}, | |
522 | ||
523 | {"move", 0x0A30, 0x01c0, "S,P", 0, SIZE_NONE, 0, | |
524 | cris_move_to_preg_op}, | |
525 | ||
526 | {"move", 0x0A70, 0x0180, "P,y", 0, SIZE_SPEC_REG, 0, | |
527 | cris_none_reg_mode_move_from_preg_op}, | |
528 | ||
529 | {"move", 0x0A70, 0x0180, "P,S", 0, SIZE_NONE, 0, | |
530 | cris_none_reg_mode_move_from_preg_op}, | |
531 | ||
532 | {"movem", 0x0BF0, 0x0000, "R,y", 0, SIZE_FIX_32, 0, | |
533 | cris_move_reg_to_mem_movem_op}, | |
534 | ||
535 | {"movem", 0x0BF0, 0x0000, "D,S", 0, SIZE_NONE, 0, | |
536 | cris_move_reg_to_mem_movem_op}, | |
537 | ||
538 | {"movem", 0x0BB0, 0x0040, "s,R", 0, SIZE_FIX_32, 0, | |
539 | cris_move_mem_to_reg_movem_op}, | |
540 | ||
541 | {"movem", 0x0BB0, 0x0040, "S,D", 0, SIZE_NONE, 0, | |
542 | cris_move_mem_to_reg_movem_op}, | |
543 | ||
544 | {"moveq", 0x0240, 0x0D80, "i,R", 0, SIZE_NONE, 0, | |
545 | cris_quick_mode_and_cmp_move_or_op}, | |
546 | ||
547 | {"movs", 0x0460, 0x0B80, "z r,R", 0, SIZE_NONE, 0, | |
548 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
549 | ||
550 | {"movs", 0x0860, 0x0380, "z s,R", 0, SIZE_FIELD, 0, | |
551 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
552 | ||
553 | {"movs", 0x0860, 0x0380, "z S,D", 0, SIZE_NONE, 0, | |
554 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
555 | ||
556 | {"movu", 0x0440, 0x0Ba0, "z r,R", 0, SIZE_NONE, 0, | |
557 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
558 | ||
559 | {"movu", 0x0840, 0x03a0, "z s,R", 0, SIZE_FIELD, 0, | |
560 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
561 | ||
562 | {"movu", 0x0840, 0x03a0, "z S,D", 0, SIZE_NONE, 0, | |
563 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
564 | ||
565 | {"mstep", 0x07f0, 0x0800, "r,R", 0, SIZE_NONE, 0, | |
566 | cris_dstep_logshift_mstep_neg_not_op}, | |
567 | ||
568 | {"muls", 0x0d00, 0x02c0, "m r,R", 0, SIZE_NONE, | |
569 | cris_ver_v10p, | |
570 | cris_muls_op}, | |
571 | ||
572 | {"mulu", 0x0900, 0x06c0, "m r,R", 0, SIZE_NONE, | |
573 | cris_ver_v10p, | |
574 | cris_mulu_op}, | |
575 | ||
576 | {"neg", 0x0580, 0x0A40, "m r,R", 0, SIZE_NONE, 0, | |
577 | cris_dstep_logshift_mstep_neg_not_op}, | |
578 | ||
579 | {"nop", NOP_OPCODE, NOP_Z_BITS, "", 0, SIZE_NONE, 0, | |
580 | cris_btst_nop_op}, | |
581 | ||
582 | {"not", 0x8770, 0x7880, "r", 0, SIZE_NONE, 0, | |
583 | cris_dstep_logshift_mstep_neg_not_op}, | |
584 | ||
585 | {"or", 0x0740, 0x0880, "m r,R", 0, SIZE_NONE, 0, | |
586 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
587 | ||
588 | {"or", 0x0B40, 0x0080, "m s,R", 0, SIZE_FIELD, 0, | |
589 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
590 | ||
591 | {"or", 0x0B40, 0x0080, "m S,D", 0, SIZE_NONE, 0, | |
592 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
593 | ||
594 | {"or", 0x0B40, 0x0480, "m S,R,r", 0, SIZE_NONE, 0, | |
595 | cris_three_operand_add_sub_cmp_and_or_op}, | |
596 | ||
597 | {"orq", 0x0340, 0x0C80, "i,R", 0, SIZE_NONE, 0, | |
598 | cris_quick_mode_and_cmp_move_or_op}, | |
599 | ||
600 | {"pop", 0x0E6E, 0x0191, "!R", 0, SIZE_NONE, 0, | |
601 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
602 | ||
603 | {"pop", 0x0e3e, 0x01c1, "!P", 0, SIZE_NONE, 0, | |
604 | cris_none_reg_mode_move_from_preg_op}, | |
605 | ||
606 | {"push", 0x0FEE, 0x0011, "BR", 0, SIZE_NONE, 0, | |
607 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
608 | ||
609 | {"push", 0x0E7E, 0x0181, "BP", 0, SIZE_NONE, 0, | |
610 | cris_move_to_preg_op}, | |
611 | ||
612 | {"rbf", 0x3b30, 0xc0c0, "y", 0, SIZE_NONE, | |
613 | cris_ver_v10p, | |
614 | cris_not_implemented_op}, | |
615 | ||
616 | {"rbf", 0x3b30, 0xc0c0, "S", 0, SIZE_NONE, | |
617 | cris_ver_v10p, | |
618 | cris_not_implemented_op}, | |
619 | ||
620 | {"ret", 0xB67F, 0x4980, "", 1, SIZE_NONE, 0, | |
621 | cris_reg_mode_move_from_preg_op}, | |
622 | ||
623 | {"retb", 0xe67f, 0x1980, "", 1, SIZE_NONE, 0, | |
624 | cris_reg_mode_move_from_preg_op}, | |
625 | ||
626 | {"reti", 0xA67F, 0x5980, "", 1, SIZE_NONE, 0, | |
627 | cris_reg_mode_move_from_preg_op}, | |
628 | ||
629 | {"sbfs", 0x3b70, 0xc080, "y", 0, SIZE_NONE, | |
630 | cris_ver_v10p, | |
631 | cris_not_implemented_op}, | |
632 | ||
633 | {"sbfs", 0x3b70, 0xc080, "S", 0, SIZE_NONE, | |
634 | cris_ver_v10p, | |
635 | cris_not_implemented_op}, | |
636 | ||
637 | {"sa", | |
638 | 0x0530+CC_A*0x1000, | |
639 | 0x0AC0+(0xf-CC_A)*0x1000, "r", 0, SIZE_NONE, 0, | |
640 | cris_scc_op}, | |
641 | ||
642 | {"scc", | |
643 | 0x0530+CC_CC*0x1000, | |
644 | 0x0AC0+(0xf-CC_CC)*0x1000, "r", 0, SIZE_NONE, 0, | |
645 | cris_scc_op}, | |
646 | ||
647 | {"scs", | |
648 | 0x0530+CC_CS*0x1000, | |
649 | 0x0AC0+(0xf-CC_CS)*0x1000, "r", 0, SIZE_NONE, 0, | |
650 | cris_scc_op}, | |
651 | ||
652 | {"seq", | |
653 | 0x0530+CC_EQ*0x1000, | |
654 | 0x0AC0+(0xf-CC_EQ)*0x1000, "r", 0, SIZE_NONE, 0, | |
655 | cris_scc_op}, | |
656 | ||
657 | {"setf", 0x05b0, 0x0A40, "f", 0, SIZE_NONE, 0, | |
658 | cris_ax_ei_setf_op}, | |
659 | ||
660 | /* Need to have "swf" in front of "sext" so it is the one displayed in | |
661 | disassembly. */ | |
662 | {"swf", | |
663 | 0x0530+CC_EXT*0x1000, | |
664 | 0x0AC0+(0xf-CC_EXT)*0x1000, "r", 0, SIZE_NONE, | |
665 | cris_ver_v10p, | |
666 | cris_scc_op}, | |
667 | ||
668 | {"sext", | |
669 | 0x0530+CC_EXT*0x1000, | |
670 | 0x0AC0+(0xf-CC_EXT)*0x1000, "r", 0, SIZE_NONE, | |
671 | cris_ver_v0_3, | |
672 | cris_scc_op}, | |
673 | ||
674 | {"sge", | |
675 | 0x0530+CC_GE*0x1000, | |
676 | 0x0AC0+(0xf-CC_GE)*0x1000, "r", 0, SIZE_NONE, 0, | |
677 | cris_scc_op}, | |
678 | ||
679 | {"sgt", | |
680 | 0x0530+CC_GT*0x1000, | |
681 | 0x0AC0+(0xf-CC_GT)*0x1000, "r", 0, SIZE_NONE, 0, | |
682 | cris_scc_op}, | |
683 | ||
684 | {"shi", | |
685 | 0x0530+CC_HI*0x1000, | |
686 | 0x0AC0+(0xf-CC_HI)*0x1000, "r", 0, SIZE_NONE, 0, | |
687 | cris_scc_op}, | |
688 | ||
689 | {"shs", | |
690 | 0x0530+CC_HS*0x1000, | |
691 | 0x0AC0+(0xf-CC_HS)*0x1000, "r", 0, SIZE_NONE, 0, | |
692 | cris_scc_op}, | |
693 | ||
694 | {"sle", | |
695 | 0x0530+CC_LE*0x1000, | |
696 | 0x0AC0+(0xf-CC_LE)*0x1000, "r", 0, SIZE_NONE, 0, | |
697 | cris_scc_op}, | |
698 | ||
699 | {"slo", | |
700 | 0x0530+CC_LO*0x1000, | |
701 | 0x0AC0+(0xf-CC_LO)*0x1000, "r", 0, SIZE_NONE, 0, | |
702 | cris_scc_op}, | |
703 | ||
704 | {"sls", | |
705 | 0x0530+CC_LS*0x1000, | |
706 | 0x0AC0+(0xf-CC_LS)*0x1000, "r", 0, SIZE_NONE, 0, | |
707 | cris_scc_op}, | |
708 | ||
709 | {"slt", | |
710 | 0x0530+CC_LT*0x1000, | |
711 | 0x0AC0+(0xf-CC_LT)*0x1000, "r", 0, SIZE_NONE, 0, | |
712 | cris_scc_op}, | |
713 | ||
714 | {"smi", | |
715 | 0x0530+CC_MI*0x1000, | |
716 | 0x0AC0+(0xf-CC_MI)*0x1000, "r", 0, SIZE_NONE, 0, | |
717 | cris_scc_op}, | |
718 | ||
719 | {"sne", | |
720 | 0x0530+CC_NE*0x1000, | |
721 | 0x0AC0+(0xf-CC_NE)*0x1000, "r", 0, SIZE_NONE, 0, | |
722 | cris_scc_op}, | |
723 | ||
724 | {"spl", | |
725 | 0x0530+CC_PL*0x1000, | |
726 | 0x0AC0+(0xf-CC_PL)*0x1000, "r", 0, SIZE_NONE, 0, | |
727 | cris_scc_op}, | |
728 | ||
729 | {"sub", 0x0680, 0x0940, "m r,R", 0, SIZE_NONE, 0, | |
730 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
731 | ||
732 | {"sub", 0x0a80, 0x0140, "m s,R", 0, SIZE_FIELD, 0, | |
733 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
734 | ||
735 | {"sub", 0x0a80, 0x0140, "m S,D", 0, SIZE_NONE, 0, | |
736 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
737 | ||
738 | {"sub", 0x0a80, 0x0540, "m S,R,r", 0, SIZE_NONE, 0, | |
739 | cris_three_operand_add_sub_cmp_and_or_op}, | |
740 | ||
741 | {"subq", 0x0280, 0x0d40, "I,R", 0, SIZE_NONE, 0, | |
742 | cris_quick_mode_add_sub_op}, | |
743 | ||
744 | {"subs", 0x04a0, 0x0b40, "z r,R", 0, SIZE_NONE, 0, | |
745 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
746 | ||
747 | {"subs", 0x08a0, 0x0340, "z s,R", 0, SIZE_FIELD, 0, | |
748 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
749 | ||
750 | {"subs", 0x08a0, 0x0340, "z S,D", 0, SIZE_NONE, 0, | |
751 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
752 | ||
753 | {"subs", 0x08a0, 0x0740, "z S,R,r", 0, SIZE_NONE, 0, | |
754 | cris_three_operand_add_sub_cmp_and_or_op}, | |
755 | ||
756 | {"subu", 0x0480, 0x0b60, "z r,R", 0, SIZE_NONE, 0, | |
757 | cris_reg_mode_add_sub_cmp_and_or_move_op}, | |
758 | ||
759 | {"subu", 0x0880, 0x0360, "z s,R", 0, SIZE_FIELD, 0, | |
760 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
761 | ||
762 | {"subu", 0x0880, 0x0360, "z S,D", 0, SIZE_NONE, 0, | |
763 | cris_none_reg_mode_add_sub_cmp_and_or_move_op}, | |
764 | ||
765 | {"subu", 0x0880, 0x0760, "z S,R,r", 0, SIZE_NONE, 0, | |
766 | cris_three_operand_add_sub_cmp_and_or_op}, | |
767 | ||
768 | {"svc", | |
769 | 0x0530+CC_VC*0x1000, | |
770 | 0x0AC0+(0xf-CC_VC)*0x1000, "r", 0, SIZE_NONE, 0, | |
771 | cris_scc_op}, | |
772 | ||
773 | {"svs", | |
774 | 0x0530+CC_VS*0x1000, | |
775 | 0x0AC0+(0xf-CC_VS)*0x1000, "r", 0, SIZE_NONE, 0, | |
776 | cris_scc_op}, | |
777 | ||
778 | /* The insn "swapn" is the same as "not" and will be disassembled as | |
779 | such, but the swap* family of mnmonics are generally v8-and-higher | |
780 | only, so count it in. */ | |
781 | {"swapn", 0x8770, 0x7880, "r", 0, SIZE_NONE, | |
782 | cris_ver_v8p, | |
783 | cris_not_implemented_op}, | |
784 | ||
785 | {"swapw", 0x4770, 0xb880, "r", 0, SIZE_NONE, | |
786 | cris_ver_v8p, | |
787 | cris_not_implemented_op}, | |
788 | ||
789 | {"swapnw", 0xc770, 0x3880, "r", 0, SIZE_NONE, | |
790 | cris_ver_v8p, | |
791 | cris_not_implemented_op}, | |
792 | ||
793 | {"swapb", 0x2770, 0xd880, "r", 0, SIZE_NONE, | |
794 | cris_ver_v8p, | |
795 | cris_not_implemented_op}, | |
796 | ||
797 | {"swapnb", 0xA770, 0x5880, "r", 0, SIZE_NONE, | |
798 | cris_ver_v8p, | |
799 | cris_not_implemented_op}, | |
800 | ||
801 | {"swapwb", 0x6770, 0x9880, "r", 0, SIZE_NONE, | |
802 | cris_ver_v8p, | |
803 | cris_not_implemented_op}, | |
804 | ||
805 | {"swapnwb", 0xE770, 0x1880, "r", 0, SIZE_NONE, | |
806 | cris_ver_v8p, | |
807 | cris_not_implemented_op}, | |
808 | ||
809 | {"swapr", 0x1770, 0xe880, "r", 0, SIZE_NONE, | |
810 | cris_ver_v8p, | |
811 | cris_not_implemented_op}, | |
812 | ||
813 | {"swapnr", 0x9770, 0x6880, "r", 0, SIZE_NONE, | |
814 | cris_ver_v8p, | |
815 | cris_not_implemented_op}, | |
816 | ||
817 | {"swapwr", 0x5770, 0xa880, "r", 0, SIZE_NONE, | |
818 | cris_ver_v8p, | |
819 | cris_not_implemented_op}, | |
820 | ||
821 | {"swapnwr", 0xd770, 0x2880, "r", 0, SIZE_NONE, | |
822 | cris_ver_v8p, | |
823 | cris_not_implemented_op}, | |
824 | ||
825 | {"swapbr", 0x3770, 0xc880, "r", 0, SIZE_NONE, | |
826 | cris_ver_v8p, | |
827 | cris_not_implemented_op}, | |
828 | ||
829 | {"swapnbr", 0xb770, 0x4880, "r", 0, SIZE_NONE, | |
830 | cris_ver_v8p, | |
831 | cris_not_implemented_op}, | |
832 | ||
833 | {"swapwbr", 0x7770, 0x8880, "r", 0, SIZE_NONE, | |
834 | cris_ver_v8p, | |
835 | cris_not_implemented_op}, | |
836 | ||
837 | {"swapnwbr", 0xf770, 0x0880, "r", 0, SIZE_NONE, | |
838 | cris_ver_v8p, | |
839 | cris_not_implemented_op}, | |
840 | ||
841 | {"test", 0x0640, 0x0980, "m D", 0, SIZE_NONE, 0, | |
842 | cris_reg_mode_test_op}, | |
843 | ||
844 | {"test", 0x0b80, 0xf040, "m s", 0, SIZE_FIELD, 0, | |
845 | cris_none_reg_mode_clear_test_op}, | |
846 | ||
847 | {"test", 0x0b80, 0xf040, "m S", 0, SIZE_NONE, 0, | |
848 | cris_none_reg_mode_clear_test_op}, | |
849 | ||
850 | {"xor", 0x07B0, 0x0840, "r,R", 0, SIZE_NONE, 0, | |
851 | cris_xor_op}, | |
852 | ||
853 | {NULL, 0, 0, NULL, 0, 0, 0, cris_not_implemented_op} | |
854 | }; | |
855 | ||
856 | /* Condition-names, indexed by the CC_* numbers as found in cris.h. */ | |
857 | const char * const | |
858 | cris_cc_strings[] = | |
859 | { | |
860 | "hs", | |
861 | "lo", | |
862 | "ne", | |
863 | "eq", | |
864 | "vc", | |
865 | "vs", | |
866 | "pl", | |
867 | "mi", | |
868 | "ls", | |
869 | "hi", | |
870 | "ge", | |
871 | "lt", | |
872 | "gt", | |
873 | "le", | |
874 | "a", | |
875 | /* In v0, this would be "ext". */ | |
876 | "wf", | |
877 | }; | |
878 | ||
879 | ||
880 | /* | |
881 | * Local variables: | |
882 | * eval: (c-set-style "gnu") | |
883 | * indent-tabs-mode: t | |
884 | * End: | |
885 | */ |