OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [sim/] [i960/] [i960-desc.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/* CPU data header for i960.
2
 
3
THIS FILE IS MACHINE GENERATED WITH CGEN.
4
 
5
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
6
 
7
This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
 
9
This program is free software; you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation; either version 2, or (at your option)
12
any later version.
13
 
14
This program is distributed in the hope that it will be useful,
15
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 along
20
with this program; if not, write to the Free Software Foundation, Inc.,
21
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
 
23
*/
24
 
25
#ifndef I960_CPU_H
26
#define I960_CPU_H
27
 
28
#define CGEN_ARCH i960
29
 
30
/* Given symbol S, return i960_cgen_<S>.  */
31
#define CGEN_SYM(s) CONCAT3 (i960,_cgen_,s)
32
 
33
/* Selected cpu families.  */
34
#define HAVE_CPU_I960BASE
35
 
36
#define CGEN_INSN_LSB0_P 0
37
 
38
/* Minimum size of any insn (in bytes).  */
39
#define CGEN_MIN_INSN_SIZE 4
40
 
41
/* Maximum size of any insn (in bytes).  */
42
#define CGEN_MAX_INSN_SIZE 8
43
 
44
#define CGEN_INT_INSN_P 0
45
 
46
/* FIXME: Need to compute CGEN_MAX_SYNTAX_BYTES.  */
47
 
48
/* CGEN_MNEMONIC_OPERANDS is defined if mnemonics have operands.
49
   e.g. In "b,a foo" the ",a" is an operand.  If mnemonics have operands
50
   we can't hash on everything up to the space.  */
51
#define CGEN_MNEMONIC_OPERANDS
52
 
53
/* Maximum number of operands any insn or macro-insn has.  */
54
#define CGEN_MAX_INSN_OPERANDS 16
55
 
56
/* Maximum number of fields in an instruction.  */
57
#define CGEN_MAX_IFMT_OPERANDS 9
58
 
59
/* Enums.  */
60
 
61
/* Enum declaration for insn opcode enums.  */
62
typedef enum insn_opcode {
63
  OPCODE_00, OPCODE_01, OPCODE_02, OPCODE_03
64
 , OPCODE_04, OPCODE_05, OPCODE_06, OPCODE_07
65
 , OPCODE_08, OPCODE_09, OPCODE_0A, OPCODE_0B
66
 , OPCODE_0C, OPCODE_0D, OPCODE_0E, OPCODE_0F
67
 , OPCODE_10, OPCODE_11, OPCODE_12, OPCODE_13
68
 , OPCODE_14, OPCODE_15, OPCODE_16, OPCODE_17
69
 , OPCODE_18, OPCODE_19, OPCODE_1A, OPCODE_1B
70
 , OPCODE_1C, OPCODE_1D, OPCODE_1E, OPCODE_1F
71
 , OPCODE_20, OPCODE_21, OPCODE_22, OPCODE_23
72
 , OPCODE_24, OPCODE_25, OPCODE_26, OPCODE_27
73
 , OPCODE_28, OPCODE_29, OPCODE_2A, OPCODE_2B
74
 , OPCODE_2C, OPCODE_2D, OPCODE_2E, OPCODE_2F
75
 , OPCODE_30, OPCODE_31, OPCODE_32, OPCODE_33
76
 , OPCODE_34, OPCODE_35, OPCODE_36, OPCODE_37
77
 , OPCODE_38, OPCODE_39, OPCODE_3A, OPCODE_3B
78
 , OPCODE_3C, OPCODE_3D, OPCODE_3E, OPCODE_3F
79
 , OPCODE_40, OPCODE_41, OPCODE_42, OPCODE_43
80
 , OPCODE_44, OPCODE_45, OPCODE_46, OPCODE_47
81
 , OPCODE_48, OPCODE_49, OPCODE_4A, OPCODE_4B
82
 , OPCODE_4C, OPCODE_4D, OPCODE_4E, OPCODE_4F
83
 , OPCODE_50, OPCODE_51, OPCODE_52, OPCODE_53
84
 , OPCODE_54, OPCODE_55, OPCODE_56, OPCODE_57
85
 , OPCODE_58, OPCODE_59, OPCODE_5A, OPCODE_5B
86
 , OPCODE_5C, OPCODE_5D, OPCODE_5E, OPCODE_5F
87
 , OPCODE_60, OPCODE_61, OPCODE_62, OPCODE_63
88
 , OPCODE_64, OPCODE_65, OPCODE_66, OPCODE_67
89
 , OPCODE_68, OPCODE_69, OPCODE_6A, OPCODE_6B
90
 , OPCODE_6C, OPCODE_6D, OPCODE_6E, OPCODE_6F
91
 , OPCODE_70, OPCODE_71, OPCODE_72, OPCODE_73
92
 , OPCODE_74, OPCODE_75, OPCODE_76, OPCODE_77
93
 , OPCODE_78, OPCODE_79, OPCODE_7A, OPCODE_7B
94
 , OPCODE_7C, OPCODE_7D, OPCODE_7E, OPCODE_7F
95
 , OPCODE_80, OPCODE_81, OPCODE_82, OPCODE_83
96
 , OPCODE_84, OPCODE_85, OPCODE_86, OPCODE_87
97
 , OPCODE_88, OPCODE_89, OPCODE_8A, OPCODE_8B
98
 , OPCODE_8C, OPCODE_8D, OPCODE_8E, OPCODE_8F
99
 , OPCODE_90, OPCODE_91, OPCODE_92, OPCODE_93
100
 , OPCODE_94, OPCODE_95, OPCODE_96, OPCODE_97
101
 , OPCODE_98, OPCODE_99, OPCODE_9A, OPCODE_9B
102
 , OPCODE_9C, OPCODE_9D, OPCODE_9E, OPCODE_9F
103
 , OPCODE_A0, OPCODE_A1, OPCODE_A2, OPCODE_A3
104
 , OPCODE_A4, OPCODE_A5, OPCODE_A6, OPCODE_A7
105
 , OPCODE_A8, OPCODE_A9, OPCODE_AA, OPCODE_AB
106
 , OPCODE_AC, OPCODE_AD, OPCODE_AE, OPCODE_AF
107
 , OPCODE_B0, OPCODE_B1, OPCODE_B2, OPCODE_B3
108
 , OPCODE_B4, OPCODE_B5, OPCODE_B6, OPCODE_B7
109
 , OPCODE_B8, OPCODE_B9, OPCODE_BA, OPCODE_BB
110
 , OPCODE_BC, OPCODE_BD, OPCODE_BE, OPCODE_BF
111
 , OPCODE_C0, OPCODE_C1, OPCODE_C2, OPCODE_C3
112
 , OPCODE_C4, OPCODE_C5, OPCODE_C6, OPCODE_C7
113
 , OPCODE_C8, OPCODE_C9, OPCODE_CA, OPCODE_CB
114
 , OPCODE_CC, OPCODE_CD, OPCODE_CE, OPCODE_CF
115
 , OPCODE_D0, OPCODE_D1, OPCODE_D2, OPCODE_D3
116
 , OPCODE_D4, OPCODE_D5, OPCODE_D6, OPCODE_D7
117
 , OPCODE_D8, OPCODE_D9, OPCODE_DA, OPCODE_DB
118
 , OPCODE_DC, OPCODE_DD, OPCODE_DE, OPCODE_DF
119
 , OPCODE_E0, OPCODE_E1, OPCODE_E2, OPCODE_E3
120
 , OPCODE_E4, OPCODE_E5, OPCODE_E6, OPCODE_E7
121
 , OPCODE_E8, OPCODE_E9, OPCODE_EA, OPCODE_EB
122
 , OPCODE_EC, OPCODE_ED, OPCODE_EE, OPCODE_EF
123
 , OPCODE_F0, OPCODE_F1, OPCODE_F2, OPCODE_F3
124
 , OPCODE_F4, OPCODE_F5, OPCODE_F6, OPCODE_F7
125
 , OPCODE_F8, OPCODE_F9, OPCODE_FA, OPCODE_FB
126
 , OPCODE_FC, OPCODE_FD, OPCODE_FE, OPCODE_FF
127
} INSN_OPCODE;
128
 
129
/* Enum declaration for insn opcode2 enums.  */
130
typedef enum insn_opcode2 {
131
  OPCODE2_0, OPCODE2_1, OPCODE2_2, OPCODE2_3
132
 , OPCODE2_4, OPCODE2_5, OPCODE2_6, OPCODE2_7
133
 , OPCODE2_8, OPCODE2_9, OPCODE2_A, OPCODE2_B
134
 , OPCODE2_C, OPCODE2_D, OPCODE2_E, OPCODE2_F
135
} INSN_OPCODE2;
136
 
137
/* Enum declaration for insn m3 enums.  */
138
typedef enum insn_m3 {
139
  M3_0, M3_1
140
} INSN_M3;
141
 
142
/* Enum declaration for insn m3 enums.  */
143
typedef enum insn_m2 {
144
  M2_0, M2_1
145
} INSN_M2;
146
 
147
/* Enum declaration for insn m1 enums.  */
148
typedef enum insn_m1 {
149
  M1_0, M1_1
150
} INSN_M1;
151
 
152
/* Enum declaration for insn zero enums.  */
153
typedef enum insn_zero {
154
  ZERO_0
155
} INSN_ZERO;
156
 
157
/* Enum declaration for insn mode a enums.  */
158
typedef enum insn_modea {
159
  MODEA_OFFSET, MODEA_INDIRECT_OFFSET
160
} INSN_MODEA;
161
 
162
/* Enum declaration for insn zero a enums.  */
163
typedef enum insn_zeroa {
164
  ZEROA_0
165
} INSN_ZEROA;
166
 
167
/* Enum declaration for insn mode b enums.  */
168
typedef enum insn_modeb {
169
  MODEB_ILL0, MODEB_ILL1, MODEB_ILL2, MODEB_ILL3
170
 , MODEB_INDIRECT, MODEB_IP_DISP, MODEB_RES6, MODEB_INDIRECT_INDEX
171
 , MODEB_ILL8, MODEB_ILL9, MODEB_ILL10, MODEB_ILL11
172
 , MODEB_DISP, MODEB_INDIRECT_DISP, MODEB_INDEX_DISP, MODEB_INDIRECT_INDEX_DISP
173
} INSN_MODEB;
174
 
175
/* Enum declaration for insn zero b enums.  */
176
typedef enum insn_zerob {
177
  ZEROB_0
178
} INSN_ZEROB;
179
 
180
/* Enum declaration for insn branch m1 enums.  */
181
typedef enum insn_br_m1 {
182
  BR_M1_0, BR_M1_1
183
} INSN_BR_M1;
184
 
185
/* Enum declaration for insn branch zero enums.  */
186
typedef enum insn_br_zero {
187
  BR_ZERO_0
188
} INSN_BR_ZERO;
189
 
190
/* Enum declaration for insn ctrl zero enums.  */
191
typedef enum insn_ctrl_zero {
192
  CTRL_ZERO_0
193
} INSN_CTRL_ZERO;
194
 
195
/* Attributes.  */
196
 
197
/* Enum declaration for machine type selection.  */
198
typedef enum mach_attr {
199
  MACH_BASE, MACH_I960_KA_SA, MACH_I960_CA, MACH_MAX
200
} MACH_ATTR;
201
 
202
/* Enum declaration for instruction set selection.  */
203
typedef enum isa_attr {
204
  ISA_I960, ISA_MAX
205
} ISA_ATTR;
206
 
207
/* Number of architecture variants.  */
208
#define MAX_ISAS  1
209
#define MAX_MACHS ((int) MACH_MAX)
210
 
211
/* Ifield support.  */
212
 
213
extern const struct cgen_ifld i960_cgen_ifld_table[];
214
 
215
/* Ifield attribute indices.  */
216
 
217
/* Enum declaration for cgen_ifld attrs.  */
218
typedef enum cgen_ifld_attr {
219
  CGEN_IFLD_VIRTUAL, CGEN_IFLD_PCREL_ADDR, CGEN_IFLD_ABS_ADDR, CGEN_IFLD_RESERVED
220
 , CGEN_IFLD_SIGN_OPT, CGEN_IFLD_SIGNED, CGEN_IFLD_END_BOOLS, CGEN_IFLD_START_NBOOLS = 31
221
 , CGEN_IFLD_MACH, CGEN_IFLD_END_NBOOLS
222
} CGEN_IFLD_ATTR;
223
 
224
/* Number of non-boolean elements in cgen_ifld_attr.  */
225
#define CGEN_IFLD_NBOOL_ATTRS (CGEN_IFLD_END_NBOOLS - CGEN_IFLD_START_NBOOLS - 1)
226
 
227
/* Enum declaration for i960 ifield types.  */
228
typedef enum ifield_type {
229
  I960_F_NIL, I960_F_OPCODE, I960_F_SRCDST, I960_F_SRC2
230
 , I960_F_M3, I960_F_M2, I960_F_M1, I960_F_OPCODE2
231
 , I960_F_ZERO, I960_F_SRC1, I960_F_ABASE, I960_F_MODEA
232
 , I960_F_ZEROA, I960_F_OFFSET, I960_F_MODEB, I960_F_SCALE
233
 , I960_F_ZEROB, I960_F_INDEX, I960_F_OPTDISP, I960_F_BR_SRC1
234
 , I960_F_BR_SRC2, I960_F_BR_M1, I960_F_BR_DISP, I960_F_BR_ZERO
235
 , I960_F_CTRL_DISP, I960_F_CTRL_ZERO, I960_F_MAX
236
} IFIELD_TYPE;
237
 
238
#define MAX_IFLD ((int) I960_F_MAX)
239
 
240
/* Hardware attribute indices.  */
241
 
242
/* Enum declaration for cgen_hw attrs.  */
243
typedef enum cgen_hw_attr {
244
  CGEN_HW_VIRTUAL, CGEN_HW_CACHE_ADDR, CGEN_HW_PC, CGEN_HW_PROFILE
245
 , CGEN_HW_END_BOOLS, CGEN_HW_START_NBOOLS = 31, CGEN_HW_MACH, CGEN_HW_END_NBOOLS
246
} CGEN_HW_ATTR;
247
 
248
/* Number of non-boolean elements in cgen_hw_attr.  */
249
#define CGEN_HW_NBOOL_ATTRS (CGEN_HW_END_NBOOLS - CGEN_HW_START_NBOOLS - 1)
250
 
251
/* Enum declaration for i960 hardware types.  */
252
typedef enum cgen_hw_type {
253
  HW_H_MEMORY, HW_H_SINT, HW_H_UINT, HW_H_ADDR
254
 , HW_H_IADDR, HW_H_PC, HW_H_GR, HW_H_CC
255
 , HW_MAX
256
} CGEN_HW_TYPE;
257
 
258
#define MAX_HW ((int) HW_MAX)
259
 
260
/* Operand attribute indices.  */
261
 
262
/* Enum declaration for cgen_operand attrs.  */
263
typedef enum cgen_operand_attr {
264
  CGEN_OPERAND_VIRTUAL, CGEN_OPERAND_PCREL_ADDR, CGEN_OPERAND_ABS_ADDR, CGEN_OPERAND_SIGN_OPT
265
 , CGEN_OPERAND_SIGNED, CGEN_OPERAND_NEGATIVE, CGEN_OPERAND_RELAX, CGEN_OPERAND_SEM_ONLY
266
 , CGEN_OPERAND_END_BOOLS, CGEN_OPERAND_START_NBOOLS = 31, CGEN_OPERAND_MACH, CGEN_OPERAND_END_NBOOLS
267
} CGEN_OPERAND_ATTR;
268
 
269
/* Number of non-boolean elements in cgen_operand_attr.  */
270
#define CGEN_OPERAND_NBOOL_ATTRS (CGEN_OPERAND_END_NBOOLS - CGEN_OPERAND_START_NBOOLS - 1)
271
 
272
/* Enum declaration for i960 operand types.  */
273
typedef enum cgen_operand_type {
274
  I960_OPERAND_PC, I960_OPERAND_SRC1, I960_OPERAND_SRC2, I960_OPERAND_DST
275
 , I960_OPERAND_LIT1, I960_OPERAND_LIT2, I960_OPERAND_ST_SRC, I960_OPERAND_ABASE
276
 , I960_OPERAND_OFFSET, I960_OPERAND_SCALE, I960_OPERAND_INDEX, I960_OPERAND_OPTDISP
277
 , I960_OPERAND_BR_SRC1, I960_OPERAND_BR_SRC2, I960_OPERAND_BR_DISP, I960_OPERAND_BR_LIT1
278
 , I960_OPERAND_CTRL_DISP, I960_OPERAND_MAX
279
} CGEN_OPERAND_TYPE;
280
 
281
/* Number of operands types.  */
282
#define MAX_OPERANDS ((int) I960_OPERAND_MAX)
283
 
284
/* Maximum number of operands referenced by any insn.  */
285
#define MAX_OPERAND_INSTANCES 8
286
 
287
/* Insn attribute indices.  */
288
 
289
/* Enum declaration for cgen_insn attrs.  */
290
typedef enum cgen_insn_attr {
291
  CGEN_INSN_ALIAS, CGEN_INSN_VIRTUAL, CGEN_INSN_UNCOND_CTI, CGEN_INSN_COND_CTI
292
 , CGEN_INSN_SKIP_CTI, CGEN_INSN_DELAY_SLOT, CGEN_INSN_RELAXABLE, CGEN_INSN_RELAX
293
 , CGEN_INSN_NO_DIS, CGEN_INSN_PBB, CGEN_INSN_END_BOOLS, CGEN_INSN_START_NBOOLS = 31
294
 , CGEN_INSN_MACH, CGEN_INSN_END_NBOOLS
295
} CGEN_INSN_ATTR;
296
 
297
/* Number of non-boolean elements in cgen_insn_attr.  */
298
#define CGEN_INSN_NBOOL_ATTRS (CGEN_INSN_END_NBOOLS - CGEN_INSN_START_NBOOLS - 1)
299
 
300
/* cgen.h uses things we just defined.  */
301
#include "opcode/cgen.h"
302
 
303
/* Attributes.  */
304
extern const CGEN_ATTR_TABLE i960_cgen_hardware_attr_table[];
305
extern const CGEN_ATTR_TABLE i960_cgen_ifield_attr_table[];
306
extern const CGEN_ATTR_TABLE i960_cgen_operand_attr_table[];
307
extern const CGEN_ATTR_TABLE i960_cgen_insn_attr_table[];
308
 
309
/* Hardware decls.  */
310
 
311
extern CGEN_KEYWORD i960_cgen_opval_h_gr;
312
extern CGEN_KEYWORD i960_cgen_opval_h_cc;
313
 
314
 
315
 
316
 
317
#endif /* I960_CPU_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.