1 /* bfin.h -- Header file for ADI Blackfin opcode table 2 Copyright (C) 2005-2014 Free Software Foundation, Inc. 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 1762