1 1.1 christos /* bfin.h -- Header file for ADI Blackfin opcode table 2 1.10 christos Copyright (C) 2005-2025 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