Subversion Repositories Kolibri OS

Rev

Rev 5191 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5191 serge 1
/* bfin.h -- Header file for ADI Blackfin opcode table
6324 serge 2
   Copyright (C) 2005-2015 Free Software Foundation, Inc.
5191 serge 3
 
4
   This file is part of GDB, GAS, and the GNU binutils.
5
 
6
   GDB, GAS, and the GNU binutils are free software; you can redistribute
7
   them and/or modify them under the terms of the GNU General Public
8
   License as published by the Free Software Foundation; either version 3,
9
   or (at your option) any later version.
10
 
11
   GDB, GAS, and the GNU binutils are distributed in the hope that they
12
   will be useful, but WITHOUT ANY WARRANTY; without even the implied
13
   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
14
   the GNU General Public License for more details.
15
 
16
   You should have received a copy of the GNU General Public License
17
   along with this file; see the file COPYING3.  If not, write to the Free
18
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
19
   MA 02110-1301, USA.  */
20
 
21
#ifndef OPCODE_BFIN_H
22
#define OPCODE_BFIN_H
23
 
24
/* Common to all DSP32 instructions.  */
25
#define BIT_MULTI_INS 0x0800
26
 
27
/* This just sets the multi instruction bit of a DSP32 instruction.  */
28
#define SET_MULTI_INSTRUCTION_BIT(x) x->value |=  BIT_MULTI_INS;
29
 
30
 
31
/* DSP instructions (32 bit) */
32
 
33
/* mmod field.  */
34
#define M_S2RND 1
35
#define M_T     2
36
#define M_W32   3
37
#define M_FU    4
38
#define M_TFU   6
39
#define M_IS    8
40
#define M_ISS2  9
41
#define M_IH    11
42
#define M_IU    12
43
 
44
static inline int is_macmod_pmove (int x)
45
{
46
  return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_S2RND)
47
         || (x == M_ISS2) || (x == M_IU);
48
}
49
 
50
static inline int is_macmod_hmove (int x)
51
{
52
  return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_IU) || (x == M_T)
53
         || (x == M_TFU) || (x == M_S2RND) || (x == M_ISS2) || (x == M_IH);
54
}
55
 
56
static inline int is_macmod_signed (int x)
57
{
58
  return (x == 0) || (x == M_IS) || (x == M_T) || (x == M_S2RND)
59
         || (x == M_ISS2) || (x == M_IH) || (x == M_W32);
60
}
61
 
62
/*   dsp32mac
63
+----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
64
| 1  | 1  | 0 | 0 |.M.| 0  | 0  |.mmod..........|.MM|.P.|.w1|.op1...|
65
|.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......|
66
+----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
67
*/
68
 
69
typedef struct
70
{
71
  unsigned long opcode;
72
  int bits_src1;
73
  int mask_src1;
74
  int bits_src0;
75
  int mask_src0;
76
  int bits_dst;
77
  int mask_dst;
78
  int bits_h10;
79
  int mask_h10;
80
  int bits_h00;
81
  int mask_h00;
82
  int bits_op0;
83
  int mask_op0;
84
  int bits_w0;
85
  int mask_w0;
86
  int bits_h11;
87
  int mask_h11;
88
  int bits_h01;
89
  int mask_h01;
90
  int bits_op1;
91
  int mask_op1;
92
  int bits_w1;
93
  int mask_w1;
94
  int bits_P;
95
  int mask_P;
96
  int bits_MM;
97
  int mask_MM;
98
  int bits_mmod;
99
  int mask_mmod;
100
  int bits_code2;
101
  int mask_code2;
102
  int bits_M;
103
  int mask_M;
104
  int bits_code;
105
  int mask_code;
106
} DSP32Mac;
107
 
108
#define DSP32Mac_opcode			0xc0000000
109
#define DSP32Mac_src1_bits		0
110
#define DSP32Mac_src1_mask		0x7
111
#define DSP32Mac_src0_bits		3
112
#define DSP32Mac_src0_mask		0x7
113
#define DSP32Mac_dst_bits		6
114
#define DSP32Mac_dst_mask		0x7
115
#define DSP32Mac_h10_bits		9
116
#define DSP32Mac_h10_mask		0x1
117
#define DSP32Mac_h00_bits		10
118
#define DSP32Mac_h00_mask		0x1
119
#define DSP32Mac_op0_bits		11
120
#define DSP32Mac_op0_mask		0x3
121
#define DSP32Mac_w0_bits		13
122
#define DSP32Mac_w0_mask		0x1
123
#define DSP32Mac_h11_bits		14
124
#define DSP32Mac_h11_mask		0x1
125
#define DSP32Mac_h01_bits		15
126
#define DSP32Mac_h01_mask		0x1
127
#define DSP32Mac_op1_bits		16
128
#define DSP32Mac_op1_mask		0x3
129
#define DSP32Mac_w1_bits		18
130
#define DSP32Mac_w1_mask		0x1
131
#define DSP32Mac_p_bits			19
132
#define DSP32Mac_p_mask			0x1
133
#define DSP32Mac_MM_bits		20
134
#define DSP32Mac_MM_mask		0x1
135
#define DSP32Mac_mmod_bits		21
136
#define DSP32Mac_mmod_mask		0xf
137
#define DSP32Mac_code2_bits		25
138
#define DSP32Mac_code2_mask		0x3
139
#define DSP32Mac_M_bits			27
140
#define DSP32Mac_M_mask			0x1
141
#define DSP32Mac_code_bits		28
142
#define DSP32Mac_code_mask		0xf
143
 
144
#define init_DSP32Mac				\
145
{						\
146
  DSP32Mac_opcode,				\
147
  DSP32Mac_src1_bits,	DSP32Mac_src1_mask,	\
148
  DSP32Mac_src0_bits,	DSP32Mac_src0_mask,	\
149
  DSP32Mac_dst_bits,	DSP32Mac_dst_mask,	\
150
  DSP32Mac_h10_bits,	DSP32Mac_h10_mask,	\
151
  DSP32Mac_h00_bits,	DSP32Mac_h00_mask,	\
152
  DSP32Mac_op0_bits,	DSP32Mac_op0_mask,	\
153
  DSP32Mac_w0_bits,	DSP32Mac_w0_mask,	\
154
  DSP32Mac_h11_bits,	DSP32Mac_h11_mask,	\
155
  DSP32Mac_h01_bits,	DSP32Mac_h01_mask,	\
156
  DSP32Mac_op1_bits,	DSP32Mac_op1_mask,	\
157
  DSP32Mac_w1_bits,	DSP32Mac_w1_mask,	\
158
  DSP32Mac_p_bits,	DSP32Mac_p_mask,	\
159
  DSP32Mac_MM_bits,	DSP32Mac_MM_mask,	\
160
  DSP32Mac_mmod_bits,	DSP32Mac_mmod_mask,	\
161
  DSP32Mac_code2_bits,	DSP32Mac_code2_mask,	\
162
  DSP32Mac_M_bits,	DSP32Mac_M_mask,	\
163
  DSP32Mac_code_bits,	DSP32Mac_code_mask	\
164
};
165
 
166
/*  dsp32mult
167
+----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
168
| 1  | 1  | 0 | 0 |.M.| 0  | 1  |.mmod..........|.MM|.P.|.w1|.op1...|
169
|.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......|
170
+----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
171
*/
172
 
173
typedef DSP32Mac DSP32Mult;
174
#define DSP32Mult_opcode 	0xc2000000
175
 
176
#define init_DSP32Mult				\
177
{						\
178
  DSP32Mult_opcode,				\
179
  DSP32Mac_src1_bits,	DSP32Mac_src1_mask,	\
180
  DSP32Mac_src0_bits,	DSP32Mac_src0_mask,	\
181
  DSP32Mac_dst_bits,	DSP32Mac_dst_mask,	\
182
  DSP32Mac_h10_bits,	DSP32Mac_h10_mask,	\
183
  DSP32Mac_h00_bits,	DSP32Mac_h00_mask,	\
184
  DSP32Mac_op0_bits,	DSP32Mac_op0_mask,	\
185
  DSP32Mac_w0_bits,	DSP32Mac_w0_mask,	\
186
  DSP32Mac_h11_bits,	DSP32Mac_h11_mask,	\
187
  DSP32Mac_h01_bits,	DSP32Mac_h01_mask,	\
188
  DSP32Mac_op1_bits,	DSP32Mac_op1_mask,	\
189
  DSP32Mac_w1_bits,	DSP32Mac_w1_mask,	\
190
  DSP32Mac_p_bits,	DSP32Mac_p_mask,	\
191
  DSP32Mac_MM_bits,	DSP32Mac_MM_mask,	\
192
  DSP32Mac_mmod_bits,	DSP32Mac_mmod_mask,	\
193
  DSP32Mac_code2_bits,	DSP32Mac_code2_mask,	\
194
  DSP32Mac_M_bits,	DSP32Mac_M_mask,	\
195
  DSP32Mac_code_bits,	DSP32Mac_code_mask	\
196
};
197
 
198
/*  dsp32alu
199
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
200
| 1 | 1 | 0 | 0 |.M.| 1 | 0 | - | - | - |.HL|.aopcde............|
201
|.aop...|.s.|.x.|.dst0......|.dst1......|.src0......|.src1......|
202
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
203
*/
204
 
205
typedef struct
206
{
207
  unsigned long opcode;
208
  int bits_src1;
209
  int mask_src1;
210
  int bits_src0;
211
  int mask_src0;
212
  int bits_dst1;
213
  int mask_dst1;
214
  int bits_dst0;
215
  int mask_dst0;
216
  int bits_x;
217
  int mask_x;
218
  int bits_s;
219
  int mask_s;
220
  int bits_aop;
221
  int mask_aop;
222
  int bits_aopcde;
223
  int mask_aopcde;
224
  int bits_HL;
225
  int mask_HL;
226
  int bits_dontcare;
227
  int mask_dontcare;
228
  int bits_code2;
229
  int mask_code2;
230
  int bits_M;
231
  int mask_M;
232
  int bits_code;
233
  int mask_code;
234
} DSP32Alu;
235
 
236
#define DSP32Alu_opcode		0xc4000000
237
#define DSP32Alu_src1_bits	0
238
#define DSP32Alu_src1_mask	0x7
239
#define DSP32Alu_src0_bits	3
240
#define DSP32Alu_src0_mask	0x7
241
#define DSP32Alu_dst1_bits	6
242
#define DSP32Alu_dst1_mask	0x7
243
#define DSP32Alu_dst0_bits	9
244
#define DSP32Alu_dst0_mask	0x7
245
#define DSP32Alu_x_bits		12
246
#define DSP32Alu_x_mask		0x1
247
#define DSP32Alu_s_bits		13
248
#define DSP32Alu_s_mask		0x1
249
#define DSP32Alu_aop_bits	14
250
#define DSP32Alu_aop_mask	0x3
251
#define DSP32Alu_aopcde_bits	16
252
#define DSP32Alu_aopcde_mask	0x1f
253
#define DSP32Alu_HL_bits	21
254
#define DSP32Alu_HL_mask	0x1
255
#define DSP32Alu_dontcare_bits	22
256
#define DSP32Alu_dontcare_mask	0x7
257
#define DSP32Alu_code2_bits	25
258
#define DSP32Alu_code2_mask	0x3
259
#define DSP32Alu_M_bits		27
260
#define DSP32Alu_M_mask		0x1
261
#define DSP32Alu_code_bits	28
262
#define DSP32Alu_code_mask	0xf
263
 
264
#define init_DSP32Alu 					\
265
{							\
266
  DSP32Alu_opcode,					\
267
  DSP32Alu_src1_bits,		DSP32Alu_src1_mask,	\
268
  DSP32Alu_src0_bits,		DSP32Alu_src0_mask,	\
269
  DSP32Alu_dst1_bits,		DSP32Alu_dst1_mask,	\
270
  DSP32Alu_dst0_bits,		DSP32Alu_dst0_mask,	\
271
  DSP32Alu_x_bits,		DSP32Alu_x_mask,	\
272
  DSP32Alu_s_bits,		DSP32Alu_s_mask,	\
273
  DSP32Alu_aop_bits,		DSP32Alu_aop_mask,	\
274
  DSP32Alu_aopcde_bits,		DSP32Alu_aopcde_mask,	\
275
  DSP32Alu_HL_bits,		DSP32Alu_HL_mask,	\
276
  DSP32Alu_dontcare_bits,	DSP32Alu_dontcare_mask,	\
277
  DSP32Alu_code2_bits,		DSP32Alu_code2_mask,	\
278
  DSP32Alu_M_bits,		DSP32Alu_M_mask,	\
279
  DSP32Alu_code_bits,		DSP32Alu_code_mask 	\
280
};
281
 
282
/*  dsp32shift
283
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
284
| 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 0 | - | - |.sopcde............|
285
|.sop...|.HLs...|.dst0......| - | - | - |.src0......|.src1......|
286
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
287
*/
288
 
289
typedef struct
290
{
291
  unsigned long opcode;
292
  int bits_src1;
293
  int mask_src1;
294
  int bits_src0;
295
  int mask_src0;
296
  int bits_dst1;
297
  int mask_dst1;
298
  int bits_dst0;
299
  int mask_dst0;
300
  int bits_HLs;
301
  int mask_HLs;
302
  int bits_sop;
303
  int mask_sop;
304
  int bits_sopcde;
305
  int mask_sopcde;
306
  int bits_dontcare;
307
  int mask_dontcare;
308
  int bits_code2;
309
  int mask_code2;
310
  int bits_M;
311
  int mask_M;
312
  int bits_code;
313
  int mask_code;
314
} DSP32Shift;
315
 
316
#define DSP32Shift_opcode		0xc6000000
317
#define DSP32Shift_src1_bits		0
318
#define DSP32Shift_src1_mask		0x7
319
#define DSP32Shift_src0_bits		3
320
#define DSP32Shift_src0_mask		0x7
321
#define DSP32Shift_dst1_bits		6
322
#define DSP32Shift_dst1_mask		0x7
323
#define DSP32Shift_dst0_bits		9
324
#define DSP32Shift_dst0_mask		0x7
325
#define DSP32Shift_HLs_bits		12
326
#define DSP32Shift_HLs_mask		0x3
327
#define DSP32Shift_sop_bits		14
328
#define DSP32Shift_sop_mask		0x3
329
#define DSP32Shift_sopcde_bits		16
330
#define DSP32Shift_sopcde_mask		0x1f
331
#define DSP32Shift_dontcare_bits	21
332
#define DSP32Shift_dontcare_mask	0x3
333
#define DSP32Shift_code2_bits		23
334
#define DSP32Shift_code2_mask		0xf
335
#define DSP32Shift_M_bits		27
336
#define DSP32Shift_M_mask		0x1
337
#define DSP32Shift_code_bits		28
338
#define DSP32Shift_code_mask		0xf
339
 
340
#define init_DSP32Shift						\
341
{								\
342
  DSP32Shift_opcode,						\
343
  DSP32Shift_src1_bits,		DSP32Shift_src1_mask,		\
344
  DSP32Shift_src0_bits,		DSP32Shift_src0_mask,		\
345
  DSP32Shift_dst1_bits,		DSP32Shift_dst1_mask,		\
346
  DSP32Shift_dst0_bits,		DSP32Shift_dst0_mask,		\
347
  DSP32Shift_HLs_bits,		DSP32Shift_HLs_mask,		\
348
  DSP32Shift_sop_bits,		DSP32Shift_sop_mask,		\
349
  DSP32Shift_sopcde_bits,	DSP32Shift_sopcde_mask,		\
350
  DSP32Shift_dontcare_bits,	DSP32Shift_dontcare_mask,	\
351
  DSP32Shift_code2_bits,	DSP32Shift_code2_mask,		\
352
  DSP32Shift_M_bits,		DSP32Shift_M_mask,		\
353
  DSP32Shift_code_bits,		DSP32Shift_code_mask		\
354
};
355
 
356
/*  dsp32shiftimm
357
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
358
| 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 1 | - | - |.sopcde............|
359
|.sop...|.HLs...|.dst0......|.immag.................|.src1......|
360
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
361
*/
362
 
363
typedef struct
364
{
365
  unsigned long opcode;
366
  int bits_src1;
367
  int mask_src1;
368
  int bits_immag;
369
  int mask_immag;
370
  int bits_dst0;
371
  int mask_dst0;
372
  int bits_HLs;
373
  int mask_HLs;
374
  int bits_sop;
375
  int mask_sop;
376
  int bits_sopcde;
377
  int mask_sopcde;
378
  int bits_dontcare;
379
  int mask_dontcare;
380
  int bits_code2;
381
  int mask_code2;
382
  int bits_M;
383
  int mask_M;
384
  int bits_code;
385
  int mask_code;
386
} DSP32ShiftImm;
387
 
388
#define DSP32ShiftImm_opcode		0xc6800000
389
#define DSP32ShiftImm_src1_bits		0
390
#define DSP32ShiftImm_src1_mask		0x7
391
#define DSP32ShiftImm_immag_bits	3
392
#define DSP32ShiftImm_immag_mask	0x3f
393
#define DSP32ShiftImm_dst0_bits		9
394
#define DSP32ShiftImm_dst0_mask		0x7
395
#define DSP32ShiftImm_HLs_bits		12
396
#define DSP32ShiftImm_HLs_mask		0x3
397
#define DSP32ShiftImm_sop_bits		14
398
#define DSP32ShiftImm_sop_mask		0x3
399
#define DSP32ShiftImm_sopcde_bits	16
400
#define DSP32ShiftImm_sopcde_mask	0x1f
401
#define DSP32ShiftImm_dontcare_bits	21
402
#define DSP32ShiftImm_dontcare_mask	0x3
403
#define DSP32ShiftImm_code2_bits	23
404
#define DSP32ShiftImm_code2_mask	0xf
405
#define DSP32ShiftImm_M_bits		27
406
#define DSP32ShiftImm_M_mask		0x1
407
#define DSP32ShiftImm_code_bits		28
408
#define DSP32ShiftImm_code_mask		0xf
409
 
410
#define init_DSP32ShiftImm					\
411
{								\
412
  DSP32ShiftImm_opcode,						\
413
  DSP32ShiftImm_src1_bits,	DSP32ShiftImm_src1_mask,	\
414
  DSP32ShiftImm_immag_bits,	DSP32ShiftImm_immag_mask,	\
415
  DSP32ShiftImm_dst0_bits,	DSP32ShiftImm_dst0_mask,	\
416
  DSP32ShiftImm_HLs_bits,	DSP32ShiftImm_HLs_mask,		\
417
  DSP32ShiftImm_sop_bits,	DSP32ShiftImm_sop_mask,		\
418
  DSP32ShiftImm_sopcde_bits,	DSP32ShiftImm_sopcde_mask,	\
419
  DSP32ShiftImm_dontcare_bits,	DSP32ShiftImm_dontcare_mask,	\
420
  DSP32ShiftImm_code2_bits,	DSP32ShiftImm_code2_mask,	\
421
  DSP32ShiftImm_M_bits,		DSP32ShiftImm_M_mask,		\
422
  DSP32ShiftImm_code_bits,	DSP32ShiftImm_code_mask		\
423
};
424
 
425
/* LOAD / STORE  */
426
 
427
/*  LDSTidxI
428
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
429
| 1 | 1 | 1 | 0 | 0 | 1 |.W.|.Z.|.sz....|.ptr.......|.reg.......|
430
|.offset........................................................|
431
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
432
*/
433
 
434
typedef struct
435
{
436
  unsigned long opcode;
437
  int bits_offset;
438
  int mask_offset;
439
  int bits_reg;
440
  int mask_reg;
441
  int bits_ptr;
442
  int mask_ptr;
443
  int bits_sz;
444
  int mask_sz;
445
  int bits_Z;
446
  int mask_Z;
447
  int bits_W;
448
  int mask_W;
449
  int bits_code;
450
  int mask_code;
451
} LDSTidxI;
452
 
453
#define LDSTidxI_opcode		0xe4000000
454
#define LDSTidxI_offset_bits	0
455
#define LDSTidxI_offset_mask	0xffff
456
#define LDSTidxI_reg_bits	16
457
#define LDSTidxI_reg_mask	0x7
458
#define LDSTidxI_ptr_bits	19
459
#define LDSTidxI_ptr_mask	0x7
460
#define LDSTidxI_sz_bits	22
461
#define LDSTidxI_sz_mask	0x3
462
#define LDSTidxI_Z_bits		24
463
#define LDSTidxI_Z_mask		0x1
464
#define LDSTidxI_W_bits		25
465
#define LDSTidxI_W_mask		0x1
466
#define LDSTidxI_code_bits	26
467
#define LDSTidxI_code_mask	0x3f
468
 
469
#define init_LDSTidxI				\
470
{						\
471
  LDSTidxI_opcode,				\
472
  LDSTidxI_offset_bits, LDSTidxI_offset_mask,	\
473
  LDSTidxI_reg_bits, LDSTidxI_reg_mask,		\
474
  LDSTidxI_ptr_bits, LDSTidxI_ptr_mask,		\
475
  LDSTidxI_sz_bits, LDSTidxI_sz_mask,		\
476
  LDSTidxI_Z_bits, LDSTidxI_Z_mask,		\
477
  LDSTidxI_W_bits, LDSTidxI_W_mask,		\
478
  LDSTidxI_code_bits, LDSTidxI_code_mask	\
479
};
480
 
481
 
482
/*  LDST
483
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
484
| 1 | 0 | 0 | 1 |.sz....|.W.|.aop...|.Z.|.ptr.......|.reg.......|
485
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
486
*/
487
 
488
typedef struct
489
{
490
  unsigned short opcode;
491
  int bits_reg;
492
  int mask_reg;
493
  int bits_ptr;
494
  int mask_ptr;
495
  int bits_Z;
496
  int mask_Z;
497
  int bits_aop;
498
  int mask_aop;
499
  int bits_W;
500
  int mask_W;
501
  int bits_sz;
502
  int mask_sz;
503
  int bits_code;
504
  int mask_code;
505
} LDST;
506
 
507
#define LDST_opcode		0x9000
508
#define LDST_reg_bits		0
509
#define LDST_reg_mask		0x7
510
#define LDST_ptr_bits		3
511
#define LDST_ptr_mask		0x7
512
#define LDST_Z_bits		6
513
#define LDST_Z_mask		0x1
514
#define LDST_aop_bits		7
515
#define LDST_aop_mask		0x3
516
#define LDST_W_bits		9
517
#define LDST_W_mask		0x1
518
#define LDST_sz_bits		10
519
#define LDST_sz_mask		0x3
520
#define LDST_code_bits		12
521
#define LDST_code_mask		0xf
522
 
523
#define init_LDST			\
524
{					\
525
  LDST_opcode,				\
526
  LDST_reg_bits,	LDST_reg_mask,	\
527
  LDST_ptr_bits,	LDST_ptr_mask,	\
528
  LDST_Z_bits,		LDST_Z_mask,	\
529
  LDST_aop_bits,	LDST_aop_mask,	\
530
  LDST_W_bits,		LDST_W_mask,	\
531
  LDST_sz_bits,		LDST_sz_mask,	\
532
  LDST_code_bits,	LDST_code_mask	\
533
};
534
 
535
/*  LDSTii
536
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
537
| 1 | 0 | 1 |.W.|.op....|.offset........|.ptr.......|.reg.......|
538
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
539
*/
540
 
541
typedef struct
542
{
543
  unsigned short opcode;
544
  int bits_reg;
545
  int mask_reg;
546
  int bits_ptr;
547
  int mask_ptr;
548
  int bits_offset;
549
  int mask_offset;
550
  int bits_op;
551
  int mask_op;
552
  int bits_W;
553
  int mask_W;
554
  int bits_code;
555
  int mask_code;
556
} LDSTii;
557
 
558
#define LDSTii_opcode		0xa000
559
#define LDSTii_reg_bit		0
560
#define LDSTii_reg_mask		0x7
561
#define LDSTii_ptr_bit		3
562
#define LDSTii_ptr_mask		0x7
563
#define LDSTii_offset_bit	6
564
#define LDSTii_offset_mask	0xf
565
#define LDSTii_op_bit		10
566
#define LDSTii_op_mask		0x3
567
#define LDSTii_W_bit		12
568
#define LDSTii_W_mask		0x1
569
#define LDSTii_code_bit		13
570
#define LDSTii_code_mask	0x7
571
 
572
#define init_LDSTii 				\
573
{						\
574
  LDSTii_opcode,				\
575
  LDSTii_reg_bit,	LDSTii_reg_mask,	\
576
  LDSTii_ptr_bit,	LDSTii_ptr_mask,	\
577
  LDSTii_offset_bit,    LDSTii_offset_mask, 	\
578
  LDSTii_op_bit,        LDSTii_op_mask,		\
579
  LDSTii_W_bit,		LDSTii_W_mask,		\
580
  LDSTii_code_bit,	LDSTii_code_mask	\
581
};
582
 
583
 
584
/*  LDSTiiFP
585
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
586
| 1 | 0 | 1 | 1 | 1 | 0 |.W.|.offset............|.reg...........|
587
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
588
*/
589
 
590
typedef struct
591
{
592
  unsigned short opcode;
593
  int bits_reg;
594
  int mask_reg;
595
  int bits_offset;
596
  int mask_offset;
597
  int bits_W;
598
  int mask_W;
599
  int bits_code;
600
  int mask_code;
601
} LDSTiiFP;
602
 
603
#define LDSTiiFP_opcode		0xb800
604
#define LDSTiiFP_reg_bits	0
605
#define LDSTiiFP_reg_mask	0xf
606
#define LDSTiiFP_offset_bits	4
607
#define LDSTiiFP_offset_mask	0x1f
608
#define LDSTiiFP_W_bits		9
609
#define LDSTiiFP_W_mask		0x1
610
#define LDSTiiFP_code_bits	10
611
#define LDSTiiFP_code_mask	0x3f
612
 
613
#define init_LDSTiiFP				\
614
{						\
615
  LDSTiiFP_opcode,				\
616
  LDSTiiFP_reg_bits,	LDSTiiFP_reg_mask,	\
617
  LDSTiiFP_offset_bits, LDSTiiFP_offset_mask,	\
618
  LDSTiiFP_W_bits,	LDSTiiFP_W_mask,	\
619
  LDSTiiFP_code_bits,	LDSTiiFP_code_mask	\
620
};
621
 
622
/*  dspLDST
623
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
624
| 1 | 0 | 0 | 1 | 1 | 1 |.W.|.aop...|.m.....|.i.....|.reg.......|
625
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
626
*/
627
 
628
typedef struct
629
{
630
  unsigned short opcode;
631
  int bits_reg;
632
  int mask_reg;
633
  int bits_i;
634
  int mask_i;
635
  int bits_m;
636
  int mask_m;
637
  int bits_aop;
638
  int mask_aop;
639
  int bits_W;
640
  int mask_W;
641
  int bits_code;
642
  int mask_code;
643
} DspLDST;
644
 
645
#define DspLDST_opcode		0x9c00
646
#define DspLDST_reg_bits	0
647
#define DspLDST_reg_mask	0x7
648
#define DspLDST_i_bits		3
649
#define DspLDST_i_mask		0x3
650
#define DspLDST_m_bits		5
651
#define DspLDST_m_mask		0x3
652
#define DspLDST_aop_bits	7
653
#define DspLDST_aop_mask	0x3
654
#define DspLDST_W_bits		9
655
#define DspLDST_W_mask		0x1
656
#define DspLDST_code_bits	10
657
#define DspLDST_code_mask	0x3f
658
 
659
#define init_DspLDST				\
660
{						\
661
  DspLDST_opcode,				\
662
  DspLDST_reg_bits,	DspLDST_reg_mask,	\
663
  DspLDST_i_bits,	DspLDST_i_mask,		\
664
  DspLDST_m_bits,	DspLDST_m_mask,		\
665
  DspLDST_aop_bits,	DspLDST_aop_mask,	\
666
  DspLDST_W_bits,	DspLDST_W_mask,		\
667
  DspLDST_code_bits,	DspLDST_code_mask	\
668
};
669
 
670
 
671
/*  LDSTpmod
672
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
673
| 1 | 0 | 0 | 0 |.W.|.aop...|.reg.......|.idx.......|.ptr.......|
674
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
675
*/
676
 
677
typedef struct
678
{
679
  unsigned short opcode;
680
  int bits_ptr;
681
  int mask_ptr;
682
  int bits_idx;
683
  int mask_idx;
684
  int bits_reg;
685
  int mask_reg;
686
  int bits_aop;
687
  int mask_aop;
688
  int bits_W;
689
  int mask_W;
690
  int bits_code;
691
  int mask_code;
692
} LDSTpmod;
693
 
694
#define LDSTpmod_opcode		0x8000
695
#define LDSTpmod_ptr_bits	0
696
#define LDSTpmod_ptr_mask	0x7
697
#define LDSTpmod_idx_bits	3
698
#define LDSTpmod_idx_mask	0x7
699
#define LDSTpmod_reg_bits	6
700
#define LDSTpmod_reg_mask	0x7
701
#define LDSTpmod_aop_bits	9
702
#define LDSTpmod_aop_mask	0x3
703
#define LDSTpmod_W_bits		11
704
#define LDSTpmod_W_mask		0x1
705
#define LDSTpmod_code_bits	12
706
#define LDSTpmod_code_mask	0xf
707
 
708
#define init_LDSTpmod				\
709
{						\
710
  LDSTpmod_opcode,				\
711
  LDSTpmod_ptr_bits, 	LDSTpmod_ptr_mask,	\
712
  LDSTpmod_idx_bits,	LDSTpmod_idx_mask,	\
713
  LDSTpmod_reg_bits,	LDSTpmod_reg_mask,	\
714
  LDSTpmod_aop_bits,	LDSTpmod_aop_mask,	\
715
  LDSTpmod_W_bits,	LDSTpmod_W_mask,	\
716
  LDSTpmod_code_bits,	LDSTpmod_code_mask	\
717
};
718
 
719
 
720
/*  LOGI2op
721
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
722
| 0 | 1 | 0 | 0 | 1 |.opc.......|.src...............|.dst.......|
723
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
724
*/
725
 
726
typedef struct
727
{
728
  unsigned short opcode;
729
  int bits_dst;
730
  int mask_dst;
731
  int bits_src;
732
  int mask_src;
733
  int bits_opc;
734
  int mask_opc;
735
  int bits_code;
736
  int mask_code;
737
} LOGI2op;
738
 
739
#define LOGI2op_opcode		0x4800
740
#define LOGI2op_dst_bits	0
741
#define LOGI2op_dst_mask	0x7
742
#define LOGI2op_src_bits	3
743
#define LOGI2op_src_mask	0x1f
744
#define LOGI2op_opc_bits	8
745
#define LOGI2op_opc_mask	0x7
746
#define LOGI2op_code_bits	11
747
#define LOGI2op_code_mask	0x1f
748
 
749
#define init_LOGI2op				\
750
{						\
751
  LOGI2op_opcode,				\
752
  LOGI2op_dst_bits, 	LOGI2op_dst_mask,	\
753
  LOGI2op_src_bits,	LOGI2op_src_mask,	\
754
  LOGI2op_opc_bits,	LOGI2op_opc_mask,	\
755
  LOGI2op_code_bits,	LOGI2op_code_mask	\
756
};
757
 
758
 
759
/*  ALU2op
760
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
761
| 0 | 1 | 0 | 0 | 0 | 0 |.opc...........|.src.......|.dst.......|
762
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
763
*/
764
 
765
typedef struct
766
{
767
  unsigned short opcode;
768
  int bits_dst;
769
  int mask_dst;
770
  int bits_src;
771
  int mask_src;
772
  int bits_opc;
773
  int mask_opc;
774
  int bits_code;
775
  int mask_code;
776
} ALU2op;
777
 
778
#define ALU2op_opcode 		0x4000
779
#define ALU2op_dst_bits		0
780
#define ALU2op_dst_mask		0x7
781
#define ALU2op_src_bits		3
782
#define ALU2op_src_mask		0x7
783
#define ALU2op_opc_bits		6
784
#define ALU2op_opc_mask		0xf
785
#define ALU2op_code_bits	10
786
#define ALU2op_code_mask	0x3f
787
 
788
#define init_ALU2op				\
789
{						\
790
  ALU2op_opcode,				\
791
  ALU2op_dst_bits,	ALU2op_dst_mask,	\
792
  ALU2op_src_bits,	ALU2op_src_mask,	\
793
  ALU2op_opc_bits,	ALU2op_opc_mask,	\
794
  ALU2op_code_bits,	ALU2op_code_mask	\
795
};
796
 
797
 
798
/*  BRCC
799
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
800
| 0 | 0 | 0 | 1 |.T.|.B.|.offset................................|
801
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
802
*/
803
 
804
typedef struct
805
{
806
  unsigned short opcode;
807
  int bits_offset;
808
  int mask_offset;
809
  int bits_B;
810
  int mask_B;
811
  int bits_T;
812
  int mask_T;
813
  int bits_code;
814
  int mask_code;
815
} BRCC;
816
 
817
#define BRCC_opcode		0x1000
818
#define BRCC_offset_bits	0
819
#define BRCC_offset_mask	0x3ff
820
#define BRCC_B_bits		10
821
#define BRCC_B_mask		0x1
822
#define BRCC_T_bits		11
823
#define BRCC_T_mask		0x1
824
#define BRCC_code_bits		12
825
#define BRCC_code_mask		0xf
826
 
827
#define init_BRCC				\
828
{						\
829
  BRCC_opcode,					\
830
  BRCC_offset_bits,	BRCC_offset_mask,	\
831
  BRCC_B_bits,		BRCC_B_mask,		\
832
  BRCC_T_bits,		BRCC_T_mask,		\
833
  BRCC_code_bits,	BRCC_code_mask		\
834
};
835
 
836
 
837
/*  UJUMP
838
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
839
| 0 | 0 | 1 | 0 |.offset........................................|
840
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
841
*/
842
 
843
typedef struct
844
{
845
  unsigned short opcode;
846
  int bits_offset;
847
  int mask_offset;
848
  int bits_code;
849
  int mask_code;
850
} UJump;
851
 
852
#define UJump_opcode		0x2000
853
#define UJump_offset_bits	0
854
#define UJump_offset_mask	0xfff
855
#define UJump_code_bits		12
856
#define UJump_code_mask		0xf
857
 
858
#define init_UJump				\
859
{						\
860
  UJump_opcode,					\
861
  UJump_offset_bits,	UJump_offset_mask,	\
862
  UJump_code_bits,	UJump_code_mask		\
863
};
864
 
865
 
866
/*  ProgCtrl
867
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
868
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.prgfunc.......|.poprnd........|
869
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
870
*/
871
 
872
typedef struct
873
{
874
  unsigned short opcode;
875
  int bits_poprnd;
876
  int mask_poprnd;
877
  int bits_prgfunc;
878
  int mask_prgfunc;
879
  int bits_code;
880
  int mask_code;
881
} ProgCtrl;
882
 
883
#define ProgCtrl_opcode		0x0000
884
#define ProgCtrl_poprnd_bits	0
885
#define ProgCtrl_poprnd_mask	0xf
886
#define ProgCtrl_prgfunc_bits	4
887
#define ProgCtrl_prgfunc_mask	0xf
888
#define ProgCtrl_code_bits	8
889
#define ProgCtrl_code_mask	0xff
890
 
891
#define init_ProgCtrl					\
892
{							\
893
  ProgCtrl_opcode,					\
894
  ProgCtrl_poprnd_bits,		ProgCtrl_poprnd_mask,	\
895
  ProgCtrl_prgfunc_bits,	ProgCtrl_prgfunc_mask,	\
896
  ProgCtrl_code_bits,		ProgCtrl_code_mask	\
897
};
898
 
899
/*  CALLa
900
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
901
| 1 | 1 | 1 | 0 | 0 | 0 | 1 |.S.|.msw...........................|
902
|.lsw...........................................................|
903
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
904
*/
905
 
906
 
907
typedef struct
908
{
909
  unsigned long opcode;
910
  int bits_addr;
911
  int mask_addr;
912
  int bits_S;
913
  int mask_S;
914
  int bits_code;
915
  int mask_code;
916
} CALLa;
917
 
918
#define CALLa_opcode	0xe2000000
919
#define CALLa_addr_bits	0
920
#define CALLa_addr_mask	0xffffff
921
#define CALLa_S_bits	24
922
#define CALLa_S_mask	0x1
923
#define CALLa_code_bits	25
924
#define CALLa_code_mask	0x7f
925
 
926
#define init_CALLa				\
927
{						\
928
  CALLa_opcode,					\
929
  CALLa_addr_bits,	CALLa_addr_mask,	\
930
  CALLa_S_bits,		CALLa_S_mask,		\
931
  CALLa_code_bits,	CALLa_code_mask		\
932
};
933
 
934
 
935
/*  pseudoDEBUG
936
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
937
| 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |.fn....|.grp.......|.reg.......|
938
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
939
*/
940
 
941
typedef struct
942
{
943
  unsigned short opcode;
944
  int bits_reg;
945
  int mask_reg;
946
  int bits_grp;
947
  int mask_grp;
948
  int bits_fn;
949
  int mask_fn;
950
  int bits_code;
951
  int mask_code;
952
} PseudoDbg;
953
 
954
#define PseudoDbg_opcode	0xf800
955
#define PseudoDbg_reg_bits	0
956
#define PseudoDbg_reg_mask	0x7
957
#define PseudoDbg_grp_bits	3
958
#define PseudoDbg_grp_mask	0x7
959
#define PseudoDbg_fn_bits	6
960
#define PseudoDbg_fn_mask	0x3
961
#define PseudoDbg_code_bits	8
962
#define PseudoDbg_code_mask	0xff
963
 
964
#define init_PseudoDbg				\
965
{						\
966
  PseudoDbg_opcode,				\
967
  PseudoDbg_reg_bits,	PseudoDbg_reg_mask,	\
968
  PseudoDbg_grp_bits,	PseudoDbg_grp_mask,	\
969
  PseudoDbg_fn_bits,	PseudoDbg_fn_mask,	\
970
  PseudoDbg_code_bits,	PseudoDbg_code_mask	\
971
};
972
 
973
/*  PseudoDbg_assert
974
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
975
| 1 | 1 | 1 | 1 | 0 | - | - | - | dbgop |.grp.......|.regtest...|
976
|.expected......................................................|
977
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
978
*/
979
 
980
typedef struct
981
{
982
  unsigned long opcode;
983
  int bits_expected;
984
  int mask_expected;
985
  int bits_regtest;
986
  int mask_regtest;
987
  int bits_grp;
988
  int mask_grp;
989
  int bits_dbgop;
990
  int mask_dbgop;
991
  int bits_dontcare;
992
  int mask_dontcare;
993
  int bits_code;
994
  int mask_code;
995
} PseudoDbg_Assert;
996
 
997
#define PseudoDbg_Assert_opcode		0xf0000000
998
#define PseudoDbg_Assert_expected_bits	0
999
#define PseudoDbg_Assert_expected_mask	0xffff
1000
#define PseudoDbg_Assert_regtest_bits	16
1001
#define PseudoDbg_Assert_regtest_mask	0x7
1002
#define PseudoDbg_Assert_grp_bits	19
1003
#define PseudoDbg_Assert_grp_mask	0x7
1004
#define PseudoDbg_Assert_dbgop_bits	22
1005
#define PseudoDbg_Assert_dbgop_mask	0x3
1006
#define PseudoDbg_Assert_dontcare_bits	24
1007
#define PseudoDbg_Assert_dontcare_mask	0x7
1008
#define PseudoDbg_Assert_code_bits	27
1009
#define PseudoDbg_Assert_code_mask	0x1f
1010
 
1011
#define init_PseudoDbg_Assert						\
1012
{									\
1013
  PseudoDbg_Assert_opcode,						\
1014
  PseudoDbg_Assert_expected_bits, 	PseudoDbg_Assert_expected_mask,	\
1015
  PseudoDbg_Assert_regtest_bits, 	PseudoDbg_Assert_regtest_mask,	\
1016
  PseudoDbg_Assert_grp_bits,		PseudoDbg_Assert_grp_mask,	\
1017
  PseudoDbg_Assert_dbgop_bits, 		PseudoDbg_Assert_dbgop_mask,	\
1018
  PseudoDbg_Assert_dontcare_bits, 	PseudoDbg_Assert_dontcare_mask,	\
1019
  PseudoDbg_Assert_code_bits,	 	PseudoDbg_Assert_code_mask	\
1020
};
1021
 
1022
/*  pseudoChr
1023
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1024
| 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |.ch............................|
1025
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1026
*/
1027
 
1028
typedef struct
1029
{
1030
  unsigned short opcode;
1031
  int bits_ch;
1032
  int mask_ch;
1033
  int bits_code;
1034
  int mask_code;
1035
} PseudoChr;
1036
 
1037
#define PseudoChr_opcode	0xf900
1038
#define PseudoChr_ch_bits	0
1039
#define PseudoChr_ch_mask	0xff
1040
#define PseudoChr_code_bits	8
1041
#define PseudoChr_code_mask	0xff
1042
 
1043
#define init_PseudoChr				\
1044
{						\
1045
  PseudoChr_opcode,				\
1046
  PseudoChr_ch_bits,	PseudoChr_ch_mask,	\
1047
  PseudoChr_code_bits,	PseudoChr_code_mask	\
1048
};
1049
 
1050
/*  CaCTRL
1051
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1052
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |.a.|.op....|.reg.......|
1053
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1054
*/
1055
 
1056
typedef struct
1057
{
1058
  unsigned short opcode;
1059
  int bits_reg;
1060
  int mask_reg;
1061
  int bits_op;
1062
  int mask_op;
1063
  int bits_a;
1064
  int mask_a;
1065
  int bits_code;
1066
  int mask_code;
1067
} CaCTRL;
1068
 
1069
#define CaCTRL_opcode		0x0240
1070
#define CaCTRL_reg_bits		0
1071
#define CaCTRL_reg_mask		0x7
1072
#define CaCTRL_op_bits		3
1073
#define CaCTRL_op_mask		0x3
1074
#define CaCTRL_a_bits		5
1075
#define CaCTRL_a_mask		0x1
1076
#define CaCTRL_code_bits	6
1077
#define CaCTRL_code_mask	0x3fff
1078
 
1079
#define init_CaCTRL				\
1080
{						\
1081
  CaCTRL_opcode,				\
1082
  CaCTRL_reg_bits,	CaCTRL_reg_mask,	\
1083
  CaCTRL_op_bits,	CaCTRL_op_mask,		\
1084
  CaCTRL_a_bits,	CaCTRL_a_mask,		\
1085
  CaCTRL_code_bits,	CaCTRL_code_mask	\
1086
};
1087
 
1088
/*  PushPopMultiple
1089
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1090
| 0 | 0 | 0 | 0 | 0 | 1 | 0 |.d.|.p.|.W.|.dr........|.pr........|
1091
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1092
*/
1093
 
1094
typedef struct
1095
{
1096
  unsigned short opcode;
1097
  int bits_pr;
1098
  int mask_pr;
1099
  int bits_dr;
1100
  int mask_dr;
1101
  int bits_W;
1102
  int mask_W;
1103
  int bits_p;
1104
  int mask_p;
1105
  int bits_d;
1106
  int mask_d;
1107
  int bits_code;
1108
  int mask_code;
1109
} PushPopMultiple;
1110
 
1111
#define PushPopMultiple_opcode		0x0400
1112
#define PushPopMultiple_pr_bits		0
1113
#define PushPopMultiple_pr_mask		0x7
1114
#define PushPopMultiple_dr_bits		3
1115
#define PushPopMultiple_dr_mask		0x7
1116
#define PushPopMultiple_W_bits		6
1117
#define PushPopMultiple_W_mask		0x1
1118
#define PushPopMultiple_p_bits		7
1119
#define PushPopMultiple_p_mask		0x1
1120
#define PushPopMultiple_d_bits		8
1121
#define PushPopMultiple_d_mask		0x1
1122
#define PushPopMultiple_code_bits	8
1123
#define PushPopMultiple_code_mask	0x1
1124
 
1125
#define init_PushPopMultiple					\
1126
{								\
1127
  PushPopMultiple_opcode,					\
1128
  PushPopMultiple_pr_bits,	PushPopMultiple_pr_mask,	\
1129
  PushPopMultiple_dr_bits,	PushPopMultiple_dr_mask,	\
1130
  PushPopMultiple_W_bits,	PushPopMultiple_W_mask,		\
1131
  PushPopMultiple_p_bits,	PushPopMultiple_p_mask,		\
1132
  PushPopMultiple_d_bits,	PushPopMultiple_d_mask,		\
1133
  PushPopMultiple_code_bits,	PushPopMultiple_code_mask	\
1134
};
1135
 
1136
/*  PushPopReg
1137
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1138
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |.W.|.grp.......|.reg.......|
1139
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1140
*/
1141
 
1142
typedef struct
1143
{
1144
  unsigned short opcode;
1145
  int bits_reg;
1146
  int mask_reg;
1147
  int bits_grp;
1148
  int mask_grp;
1149
  int bits_W;
1150
  int mask_W;
1151
  int bits_code;
1152
  int mask_code;
1153
} PushPopReg;
1154
 
1155
#define PushPopReg_opcode	0x0100
1156
#define PushPopReg_reg_bits	0
1157
#define PushPopReg_reg_mask	0x7
1158
#define PushPopReg_grp_bits	3
1159
#define PushPopReg_grp_mask	0x7
1160
#define PushPopReg_W_bits	6
1161
#define PushPopReg_W_mask	0x1
1162
#define PushPopReg_code_bits	7
1163
#define PushPopReg_code_mask	0x1ff
1164
 
1165
#define init_PushPopReg				\
1166
{						\
1167
  PushPopReg_opcode,				\
1168
  PushPopReg_reg_bits,	PushPopReg_reg_mask,	\
1169
  PushPopReg_grp_bits,	PushPopReg_grp_mask,	\
1170
  PushPopReg_W_bits,	PushPopReg_W_mask,	\
1171
  PushPopReg_code_bits,	PushPopReg_code_mask,	\
1172
};
1173
 
1174
/*  linkage
1175
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1176
| 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.R.|
1177
|.framesize.....................................................|
1178
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1179
*/
1180
 
1181
typedef struct
1182
{
1183
  unsigned long opcode;
1184
  int bits_framesize;
1185
  int mask_framesize;
1186
  int bits_R;
1187
  int mask_R;
1188
  int bits_code;
1189
  int mask_code;
1190
} Linkage;
1191
 
1192
#define Linkage_opcode		0xe8000000
1193
#define Linkage_framesize_bits	0
1194
#define Linkage_framesize_mask	0xffff
1195
#define Linkage_R_bits		16
1196
#define Linkage_R_mask		0x1
1197
#define Linkage_code_bits	17
1198
#define Linkage_code_mask	0x7fff
1199
 
1200
#define init_Linkage					\
1201
{							\
1202
  Linkage_opcode,					\
1203
  Linkage_framesize_bits,	Linkage_framesize_mask,	\
1204
  Linkage_R_bits,		Linkage_R_mask,		\
1205
  Linkage_code_bits,		Linkage_code_mask	\
1206
};
1207
 
1208
/*  LoopSetup
1209
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1210
| 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |.rop...|.c.|.soffset.......|
1211
|.reg...........| - | - |.eoffset...............................|
1212
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1213
*/
1214
 
1215
typedef struct
1216
{
1217
  unsigned long opcode;
1218
  int bits_eoffset;
1219
  int mask_eoffset;
1220
  int bits_dontcare;
1221
  int mask_dontcare;
1222
  int bits_reg;
1223
  int mask_reg;
1224
  int bits_soffset;
1225
  int mask_soffset;
1226
  int bits_c;
1227
  int mask_c;
1228
  int bits_rop;
1229
  int mask_rop;
1230
  int bits_code;
1231
  int mask_code;
1232
} LoopSetup;
1233
 
1234
#define LoopSetup_opcode		0xe0800000
1235
#define LoopSetup_eoffset_bits		0
1236
#define LoopSetup_eoffset_mask		0x3ff
1237
#define LoopSetup_dontcare_bits		10
1238
#define LoopSetup_dontcare_mask		0x3
1239
#define LoopSetup_reg_bits		12
1240
#define LoopSetup_reg_mask		0xf
1241
#define LoopSetup_soffset_bits		16
1242
#define LoopSetup_soffset_mask		0xf
1243
#define LoopSetup_c_bits		20
1244
#define LoopSetup_c_mask		0x1
1245
#define LoopSetup_rop_bits		21
1246
#define LoopSetup_rop_mask		0x3
1247
#define LoopSetup_code_bits		23
1248
#define LoopSetup_code_mask		0x1ff
1249
 
1250
#define init_LoopSetup						\
1251
{								\
1252
  LoopSetup_opcode,						\
1253
  LoopSetup_eoffset_bits,	LoopSetup_eoffset_mask,		\
1254
  LoopSetup_dontcare_bits,	LoopSetup_dontcare_mask,	\
1255
  LoopSetup_reg_bits,		LoopSetup_reg_mask,		\
1256
  LoopSetup_soffset_bits,	LoopSetup_soffset_mask,		\
1257
  LoopSetup_c_bits,		LoopSetup_c_mask,		\
1258
  LoopSetup_rop_bits,		LoopSetup_rop_mask,		\
1259
  LoopSetup_code_bits,		LoopSetup_code_mask		\
1260
};
1261
 
1262
/*  LDIMMhalf
1263
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1264
| 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |.Z.|.H.|.S.|.grp...|.reg.......|
1265
|.hword.........................................................|
1266
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1267
*/
1268
 
1269
typedef struct
1270
{
1271
  unsigned long opcode;
1272
  int bits_hword;
1273
  int mask_hword;
1274
  int bits_reg;
1275
  int mask_reg;
1276
  int bits_grp;
1277
  int mask_grp;
1278
  int bits_S;
1279
  int mask_S;
1280
  int bits_H;
1281
  int mask_H;
1282
  int bits_Z;
1283
  int mask_Z;
1284
  int bits_code;
1285
  int mask_code;
1286
} LDIMMhalf;
1287
 
1288
#define LDIMMhalf_opcode	0xe1000000
1289
#define LDIMMhalf_hword_bits	0
1290
#define LDIMMhalf_hword_mask	0xffff
1291
#define LDIMMhalf_reg_bits	16
1292
#define LDIMMhalf_reg_mask	0x7
1293
#define LDIMMhalf_grp_bits	19
1294
#define LDIMMhalf_grp_mask	0x3
1295
#define LDIMMhalf_S_bits	21
1296
#define LDIMMhalf_S_mask	0x1
1297
#define LDIMMhalf_H_bits	22
1298
#define LDIMMhalf_H_mask	0x1
1299
#define LDIMMhalf_Z_bits	23
1300
#define LDIMMhalf_Z_mask	0x1
1301
#define LDIMMhalf_code_bits	24
1302
#define LDIMMhalf_code_mask	0xff
1303
 
1304
#define init_LDIMMhalf				\
1305
{						\
1306
  LDIMMhalf_opcode,				\
1307
  LDIMMhalf_hword_bits,	LDIMMhalf_hword_mask,	\
1308
  LDIMMhalf_reg_bits,	LDIMMhalf_reg_mask,	\
1309
  LDIMMhalf_grp_bits,	LDIMMhalf_grp_mask,	\
1310
  LDIMMhalf_S_bits,	LDIMMhalf_S_mask,	\
1311
  LDIMMhalf_H_bits,	LDIMMhalf_H_mask,	\
1312
  LDIMMhalf_Z_bits,	LDIMMhalf_Z_mask,	\
1313
  LDIMMhalf_code_bits,	LDIMMhalf_code_mask	\
1314
};
1315
 
1316
 
1317
/*  CC2dreg
1318
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1319
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |.op....|.reg.......|
1320
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1321
*/
1322
 
1323
typedef struct
1324
{
1325
  unsigned short opcode;
1326
  int bits_reg;
1327
  int mask_reg;
1328
  int bits_op;
1329
  int mask_op;
1330
  int bits_code;
1331
  int mask_code;
1332
} CC2dreg;
1333
 
1334
#define CC2dreg_opcode		0x0200
1335
#define CC2dreg_reg_bits	0
1336
#define CC2dreg_reg_mask	0x7
1337
#define CC2dreg_op_bits		3
1338
#define CC2dreg_op_mask		0x3
1339
#define CC2dreg_code_bits	5
1340
#define CC2dreg_code_mask	0x7fff
1341
 
1342
#define init_CC2dreg				\
1343
{						\
1344
  CC2dreg_opcode,				\
1345
  CC2dreg_reg_bits,	CC2dreg_reg_mask,	\
1346
  CC2dreg_op_bits,	CC2dreg_op_mask,	\
1347
  CC2dreg_code_bits,	CC2dreg_code_mask	\
1348
};
1349
 
1350
 
1351
/*  PTR2op
1352
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1353
| 0 | 1 | 0 | 0 | 0 | 1 | 0 |.opc.......|.src.......|.dst.......|
1354
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1355
*/
1356
 
1357
typedef struct
1358
{
1359
  unsigned short opcode;
1360
  int bits_dst;
1361
  int mask_dst;
1362
  int bits_src;
1363
  int mask_src;
1364
  int bits_opc;
1365
  int mask_opc;
1366
  int bits_code;
1367
  int mask_code;
1368
} PTR2op;
1369
 
1370
#define PTR2op_opcode		0x4400
1371
#define PTR2op_dst_bits		0
1372
#define PTR2op_dst_mask		0x7
1373
#define PTR2op_src_bits		3
1374
#define PTR2op_src_mask		0x7
1375
#define PTR2op_opc_bits		6
1376
#define PTR2op_opc_mask		0x7
1377
#define PTR2op_code_bits	9
1378
#define PTR2op_code_mask	0x7f
1379
 
1380
#define init_PTR2op				\
1381
{						\
1382
  PTR2op_opcode,				\
1383
  PTR2op_dst_bits,	PTR2op_dst_mask,	\
1384
  PTR2op_src_bits,	PTR2op_src_mask,	\
1385
  PTR2op_opc_bits,	PTR2op_opc_mask,	\
1386
  PTR2op_code_bits,	PTR2op_code_mask	\
1387
};
1388
 
1389
 
1390
/*  COMP3op
1391
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1392
| 0 | 1 | 0 | 1 |.opc.......|.dst.......|.src1......|.src0......|
1393
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1394
*/
1395
 
1396
typedef struct
1397
{
1398
  unsigned short opcode;
1399
  int bits_src0;
1400
  int mask_src0;
1401
  int bits_src1;
1402
  int mask_src1;
1403
  int bits_dst;
1404
  int mask_dst;
1405
  int bits_opc;
1406
  int mask_opc;
1407
  int bits_code;
1408
  int mask_code;
1409
} COMP3op;
1410
 
1411
#define COMP3op_opcode		0x5000
1412
#define COMP3op_src0_bits	0
1413
#define COMP3op_src0_mask	0x7
1414
#define COMP3op_src1_bits	3
1415
#define COMP3op_src1_mask	0x7
1416
#define COMP3op_dst_bits	6
1417
#define COMP3op_dst_mask	0x7
1418
#define COMP3op_opc_bits	9
1419
#define COMP3op_opc_mask	0x7
1420
#define COMP3op_code_bits	12
1421
#define COMP3op_code_mask	0xf
1422
 
1423
#define init_COMP3op				\
1424
{						\
1425
  COMP3op_opcode,				\
1426
  COMP3op_src0_bits,	COMP3op_src0_mask,	\
1427
  COMP3op_src1_bits,	COMP3op_src1_mask,	\
1428
  COMP3op_dst_bits,	COMP3op_dst_mask,	\
1429
  COMP3op_opc_bits,	COMP3op_opc_mask,	\
1430
  COMP3op_code_bits,	COMP3op_code_mask	\
1431
};
1432
 
1433
/*  ccMV
1434
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1435
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |.T.|.d.|.s.|.dst.......|.src.......|
1436
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1437
*/
1438
 
1439
typedef struct
1440
{
1441
  unsigned short opcode;
1442
  int bits_src;
1443
  int mask_src;
1444
  int bits_dst;
1445
  int mask_dst;
1446
  int bits_s;
1447
  int mask_s;
1448
  int bits_d;
1449
  int mask_d;
1450
  int bits_T;
1451
  int mask_T;
1452
  int bits_code;
1453
  int mask_code;
1454
} CCmv;
1455
 
1456
#define CCmv_opcode	0x0600
1457
#define CCmv_src_bits	0
1458
#define CCmv_src_mask	0x7
1459
#define CCmv_dst_bits	3
1460
#define CCmv_dst_mask	0x7
1461
#define CCmv_s_bits	6
1462
#define CCmv_s_mask	0x1
1463
#define CCmv_d_bits	7
1464
#define CCmv_d_mask	0x1
1465
#define CCmv_T_bits	8
1466
#define CCmv_T_mask	0x1
1467
#define CCmv_code_bits	9
1468
#define CCmv_code_mask	0x7f
1469
 
1470
#define init_CCmv			\
1471
{					\
1472
  CCmv_opcode,				\
1473
  CCmv_src_bits,	CCmv_src_mask,	\
1474
  CCmv_dst_bits,	CCmv_dst_mask,	\
1475
  CCmv_s_bits,		CCmv_s_mask,	\
1476
  CCmv_d_bits,		CCmv_d_mask,	\
1477
  CCmv_T_bits,		CCmv_T_mask,	\
1478
  CCmv_code_bits,	CCmv_code_mask	\
1479
};
1480
 
1481
 
1482
/*  CCflag
1483
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1484
| 0 | 0 | 0 | 0 | 1 |.I.|.opc.......|.G.|.y.........|.x.........|
1485
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1486
*/
1487
 
1488
typedef struct
1489
{
1490
  unsigned short opcode;
1491
  int bits_x;
1492
  int mask_x;
1493
  int bits_y;
1494
  int mask_y;
1495
  int bits_G;
1496
  int mask_G;
1497
  int bits_opc;
1498
  int mask_opc;
1499
  int bits_I;
1500
  int mask_I;
1501
  int bits_code;
1502
  int mask_code;
1503
} CCflag;
1504
 
1505
#define CCflag_opcode		0x0800
1506
#define CCflag_x_bits		0
1507
#define CCflag_x_mask		0x7
1508
#define CCflag_y_bits		3
1509
#define CCflag_y_mask		0x7
1510
#define CCflag_G_bits		6
1511
#define CCflag_G_mask		0x1
1512
#define CCflag_opc_bits		7
1513
#define CCflag_opc_mask		0x7
1514
#define CCflag_I_bits		10
1515
#define CCflag_I_mask		0x1
1516
#define CCflag_code_bits	11
1517
#define CCflag_code_mask	0x1f
1518
 
1519
#define init_CCflag				\
1520
{						\
1521
  CCflag_opcode,				\
1522
  CCflag_x_bits,	CCflag_x_mask,		\
1523
  CCflag_y_bits,	CCflag_y_mask,		\
1524
  CCflag_G_bits,	CCflag_G_mask,		\
1525
  CCflag_opc_bits,	CCflag_opc_mask,	\
1526
  CCflag_I_bits,	CCflag_I_mask,		\
1527
  CCflag_code_bits,	CCflag_code_mask,	\
1528
};
1529
 
1530
 
1531
/*  CC2stat
1532
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1533
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |.D.|.op....|.cbit..............|
1534
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1535
*/
1536
 
1537
typedef struct
1538
{
1539
  unsigned short opcode;
1540
  int bits_cbit;
1541
  int mask_cbit;
1542
  int bits_op;
1543
  int mask_op;
1544
  int bits_D;
1545
  int mask_D;
1546
  int bits_code;
1547
  int mask_code;
1548
} CC2stat;
1549
 
1550
#define CC2stat_opcode		0x0300
1551
#define CC2stat_cbit_bits	0
1552
#define CC2stat_cbit_mask	0x1f
1553
#define CC2stat_op_bits		5
1554
#define CC2stat_op_mask		0x3
1555
#define CC2stat_D_bits		7
1556
#define CC2stat_D_mask		0x1
1557
#define CC2stat_code_bits	8
1558
#define CC2stat_code_mask	0xff
1559
 
1560
#define init_CC2stat				\
1561
{						\
1562
  CC2stat_opcode,				\
1563
  CC2stat_cbit_bits,	CC2stat_cbit_mask,	\
1564
  CC2stat_op_bits,	CC2stat_op_mask,	\
1565
  CC2stat_D_bits,	CC2stat_D_mask,		\
1566
  CC2stat_code_bits,	CC2stat_code_mask	\
1567
};
1568
 
1569
 
1570
/*  REGMV
1571
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1572
| 0 | 0 | 1 | 1 |.gd........|.gs........|.dst.......|.src.......|
1573
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1574
*/
1575
 
1576
typedef struct
1577
{
1578
  unsigned short opcode;
1579
  int bits_src;
1580
  int mask_src;
1581
  int bits_dst;
1582
  int mask_dst;
1583
  int bits_gs;
1584
  int mask_gs;
1585
  int bits_gd;
1586
  int mask_gd;
1587
  int bits_code;
1588
  int mask_code;
1589
} RegMv;
1590
 
1591
#define RegMv_opcode		0x3000
1592
#define RegMv_src_bits		0
1593
#define RegMv_src_mask		0x7
1594
#define RegMv_dst_bits		3
1595
#define RegMv_dst_mask		0x7
1596
#define RegMv_gs_bits		6
1597
#define RegMv_gs_mask		0x7
1598
#define RegMv_gd_bits		9
1599
#define RegMv_gd_mask		0x7
1600
#define RegMv_code_bits		12
1601
#define RegMv_code_mask		0xf
1602
 
1603
#define init_RegMv			\
1604
{					\
1605
  RegMv_opcode,				\
1606
  RegMv_src_bits,	RegMv_src_mask,	\
1607
  RegMv_dst_bits,	RegMv_dst_mask,	\
1608
  RegMv_gs_bits,	RegMv_gs_mask,	\
1609
  RegMv_gd_bits,	RegMv_gd_mask,	\
1610
  RegMv_code_bits,	RegMv_code_mask	\
1611
};
1612
 
1613
 
1614
/*  COMPI2opD
1615
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1616
| 0 | 1 | 1 | 0 | 0 |.op|.isrc......................|.dst.......|
1617
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1618
*/
1619
 
1620
typedef struct
1621
{
1622
  unsigned short opcode;
1623
  int bits_dst;
1624
  int mask_dst;
1625
  int bits_src;
1626
  int mask_src;
1627
  int bits_op;
1628
  int mask_op;
1629
  int bits_code;
1630
  int mask_code;
1631
} COMPI2opD;
1632
 
1633
#define COMPI2opD_opcode	0x6000
1634
#define COMPI2opD_dst_bits	0
1635
#define COMPI2opD_dst_mask	0x7
1636
#define COMPI2opD_src_bits	3
1637
#define COMPI2opD_src_mask	0x7f
1638
#define COMPI2opD_op_bits	10
1639
#define COMPI2opD_op_mask	0x1
1640
#define COMPI2opD_code_bits	11
1641
#define COMPI2opD_code_mask	0x1f
1642
 
1643
#define init_COMPI2opD				\
1644
{						\
1645
  COMPI2opD_opcode,				\
1646
  COMPI2opD_dst_bits,	COMPI2opD_dst_mask,	\
1647
  COMPI2opD_src_bits,	COMPI2opD_src_mask,	\
1648
  COMPI2opD_op_bits,	COMPI2opD_op_mask,	\
1649
  COMPI2opD_code_bits,	COMPI2opD_code_mask	\
1650
};
1651
 
1652
/*  COMPI2opP
1653
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1654
| 0 | 1 | 1 | 0 | 1 |.op|.src.......................|.dst.......|
1655
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1656
*/
1657
 
1658
typedef COMPI2opD COMPI2opP;
1659
 
1660
#define COMPI2opP_opcode 	0x6800
1661
#define COMPI2opP_dst_bits	0
1662
#define COMPI2opP_dst_mask	0x7
1663
#define COMPI2opP_src_bits	3
1664
#define COMPI2opP_src_mask	0x7f
1665
#define COMPI2opP_op_bits	10
1666
#define COMPI2opP_op_mask	0x1
1667
#define COMPI2opP_code_bits	11
1668
#define COMPI2opP_code_mask	0x1f
1669
 
1670
#define init_COMPI2opP				\
1671
{						\
1672
  COMPI2opP_opcode,				\
1673
  COMPI2opP_dst_bits,	COMPI2opP_dst_mask,	\
1674
  COMPI2opP_src_bits,	COMPI2opP_src_mask,	\
1675
  COMPI2opP_op_bits,	COMPI2opP_op_mask,	\
1676
  COMPI2opP_code_bits,	COMPI2opP_code_mask	\
1677
};
1678
 
1679
 
1680
/*  dagMODim
1681
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1682
| 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |.br| 1 | 1 |.op|.m.....|.i.....|
1683
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1684
*/
1685
 
1686
typedef struct
1687
{
1688
  unsigned short opcode;
1689
  int bits_i;
1690
  int mask_i;
1691
  int bits_m;
1692
  int mask_m;
1693
  int bits_op;
1694
  int mask_op;
1695
  int bits_code2;
1696
  int mask_code2;
1697
  int bits_br;
1698
  int mask_br;
1699
  int bits_code;
1700
  int mask_code;
1701
} DagMODim;
1702
 
1703
#define DagMODim_opcode		0x9e60
1704
#define DagMODim_i_bits		0
1705
#define DagMODim_i_mask		0x3
1706
#define DagMODim_m_bits		2
1707
#define DagMODim_m_mask		0x3
1708
#define DagMODim_op_bits	4
1709
#define DagMODim_op_mask	0x1
1710
#define DagMODim_code2_bits	5
1711
#define DagMODim_code2_mask	0x3
1712
#define DagMODim_br_bits	7
1713
#define DagMODim_br_mask	0x1
1714
#define DagMODim_code_bits	8
1715
#define DagMODim_code_mask	0xff
1716
 
1717
#define init_DagMODim				\
1718
{						\
1719
  DagMODim_opcode,				\
1720
  DagMODim_i_bits,	DagMODim_i_mask,	\
1721
  DagMODim_m_bits,	DagMODim_m_mask,	\
1722
  DagMODim_op_bits,	DagMODim_op_mask,	\
1723
  DagMODim_code2_bits,	DagMODim_code2_mask,	\
1724
  DagMODim_br_bits,	DagMODim_br_mask,	\
1725
  DagMODim_code_bits,	DagMODim_code_mask	\
1726
};
1727
 
1728
/*  dagMODik
1729
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1730
| 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |.op....|.i.....|
1731
+---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
1732
*/
1733
 
1734
typedef struct
1735
{
1736
  unsigned short opcode;
1737
  int bits_i;
1738
  int mask_i;
1739
  int bits_op;
1740
  int mask_op;
1741
  int bits_code;
1742
  int mask_code;
1743
} DagMODik;
1744
 
1745
#define DagMODik_opcode		0x9f60
1746
#define DagMODik_i_bits		0
1747
#define DagMODik_i_mask		0x3
1748
#define DagMODik_op_bits	2
1749
#define DagMODik_op_mask	0x3
1750
#define DagMODik_code_bits	3
1751
#define DagMODik_code_mask	0xfff
1752
 
1753
#define init_DagMODik				\
1754
{						\
1755
  DagMODik_opcode,				\
1756
  DagMODik_i_bits,	DagMODik_i_mask,	\
1757
  DagMODik_op_bits,	DagMODik_op_mask,	\
1758
  DagMODik_code_bits,	DagMODik_code_mask	\
1759
};
1760
 
1761
#endif