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