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