1*4882a593Smuzhiyun /* $Id$ */ 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun #ifndef TABLES_H 4*4882a593Smuzhiyun #define TABLES_H 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun /* This is only included by common/bedbug.c, and depends on the following 7*4882a593Smuzhiyun * files to already be included 8*4882a593Smuzhiyun * common.h 9*4882a593Smuzhiyun * bedbug/bedbug.h 10*4882a593Smuzhiyun * bedbug/ppc.h 11*4882a593Smuzhiyun * bedbug/regs.h 12*4882a593Smuzhiyun */ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun struct operand operands[] = { 15*4882a593Smuzhiyun /*Field Name Bits Shift Hint Position */ 16*4882a593Smuzhiyun /*----- ------ ----- ----- ---- ------------ */ 17*4882a593Smuzhiyun { O_AA, "O_AA", 1, 1, OH_SILENT }, /* 30 */ 18*4882a593Smuzhiyun { O_BD, "O_BD", 14, 2, OH_ADDR }, /* 16-29 */ 19*4882a593Smuzhiyun { O_BI, "O_BI", 5, 16, 0 }, /* 11-15 */ 20*4882a593Smuzhiyun { O_BO, "O_BO", 5, 21, 0 }, /* 6-10 */ 21*4882a593Smuzhiyun { O_crbD, "O_crbD", 5, 21, 0 }, /* 6-10 */ 22*4882a593Smuzhiyun { O_crbA, "O_crbA", 5, 16, 0 }, /* 11-15 */ 23*4882a593Smuzhiyun { O_crbB, "O_crbB", 5, 11, 0 }, /* 16-20 */ 24*4882a593Smuzhiyun { O_CRM, "O_CRM", 8, 12, 0 }, /* 12-19 */ 25*4882a593Smuzhiyun { O_d, "O_d", 15, 0, OH_OFFSET }, /* 16-31 */ 26*4882a593Smuzhiyun { O_frC, "O_frC", 5, 6, 0 }, /* 21-25 */ 27*4882a593Smuzhiyun { O_frD, "O_frD", 5, 21, 0 }, /* 6-10 */ 28*4882a593Smuzhiyun { O_frS, "O_frS", 5, 21, 0 }, /* 6-10 */ 29*4882a593Smuzhiyun { O_IMM, "O_IMM", 4, 12, 0 }, /* 16-19 */ 30*4882a593Smuzhiyun { O_LI, "O_LI", 24, 2, OH_ADDR }, /* 6-29 */ 31*4882a593Smuzhiyun { O_LK, "O_LK", 1, 0, OH_SILENT }, /* 31 */ 32*4882a593Smuzhiyun { O_MB, "O_MB", 5, 6, 0 }, /* 21-25 */ 33*4882a593Smuzhiyun { O_ME, "O_ME", 5, 1, 0 }, /* 26-30 */ 34*4882a593Smuzhiyun { O_NB, "O_NB", 5, 11, 0 }, /* 16-20 */ 35*4882a593Smuzhiyun { O_OE, "O_OE", 1, 10, OH_SILENT }, /* 21 */ 36*4882a593Smuzhiyun { O_rA, "O_rA", 5, 16, OH_REG }, /* 11-15 */ 37*4882a593Smuzhiyun { O_rB, "O_rB", 5, 11, OH_REG }, /* 16-20 */ 38*4882a593Smuzhiyun { O_Rc, "O_Rc", 1, 0, OH_SILENT }, /* 31 */ 39*4882a593Smuzhiyun { O_rD, "O_rD", 5, 21, OH_REG }, /* 6-10 */ 40*4882a593Smuzhiyun { O_rS, "O_rS", 5, 21, OH_REG }, /* 6-10 */ 41*4882a593Smuzhiyun { O_SH, "O_SH", 5, 11, 0 }, /* 16-20 */ 42*4882a593Smuzhiyun { O_SIMM, "O_SIMM", 16, 0, 0 }, /* 16-31 */ 43*4882a593Smuzhiyun { O_SR, "O_SR", 4, 16, 0 }, /* 12-15 */ 44*4882a593Smuzhiyun { O_TO, "O_TO", 5, 21, 0 }, /* 6-10 */ 45*4882a593Smuzhiyun { O_UIMM, "O_UIMM", 16, 0, 0 }, /* 16-31 */ 46*4882a593Smuzhiyun { O_crfD, "O_crfD", 3, 23, 0 }, /* 6- 8 */ 47*4882a593Smuzhiyun { O_crfS, "O_crfS", 3, 18, 0 }, /* 11-13 */ 48*4882a593Smuzhiyun { O_L, "O_L", 1, 21, 0 }, /* 10 */ 49*4882a593Smuzhiyun { O_spr, "O_spr", 10, 11, OH_SPR }, /* 11-20 */ 50*4882a593Smuzhiyun { O_tbr, "O_tbr", 10, 11, OH_TBR }, /* 11-20 */ 51*4882a593Smuzhiyun { O_cr2, "O_cr2", 0, 0, OH_LITERAL }, /* "cr2" */ 52*4882a593Smuzhiyun }; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun const unsigned int n_operands = sizeof(operands) / sizeof(operands[0]); 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun /* A note about the fields array in the opcodes structure: 57*4882a593Smuzhiyun The operands are listed in the order they appear in the output. 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun This table is arranged in numeric order of the opcode. Note that some 60*4882a593Smuzhiyun opcodes have defined bits in odd places so not all forms of a command 61*4882a593Smuzhiyun will be in the same place. This is done so that a binary search can be 62*4882a593Smuzhiyun done to find the opcodes. Note that table D.2 in the MPC860 User's 63*4882a593Smuzhiyun Manual "Instructions Sorted by Opcode" does not account for these 64*4882a593Smuzhiyun bit locations */ 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun struct opcode opcodes[] = { 67*4882a593Smuzhiyun { D_OPCODE(3), D_MASK, {O_TO, O_rA, O_SIMM, 0}, 68*4882a593Smuzhiyun 0, "twi", 0 }, 69*4882a593Smuzhiyun { D_OPCODE(7), D_MASK, {O_rD, O_rA, O_SIMM, 0}, 70*4882a593Smuzhiyun 0, "mulli", 0 }, 71*4882a593Smuzhiyun { D_OPCODE(8), D_MASK, {O_rD, O_rA, O_SIMM, 0}, 72*4882a593Smuzhiyun 0, "subfic", 0 }, 73*4882a593Smuzhiyun { D_OPCODE(10), D_MASK, {O_crfD, O_L, O_rA, O_UIMM, 0}, 74*4882a593Smuzhiyun 0, "cmpli", 0 }, 75*4882a593Smuzhiyun { D_OPCODE(11), D_MASK, {O_crfD, O_L, O_rA, O_SIMM, 0}, 76*4882a593Smuzhiyun 0, "cmpi", 0 }, 77*4882a593Smuzhiyun { D_OPCODE(12), D_MASK, {O_rD, O_rA, O_SIMM, 0}, 78*4882a593Smuzhiyun 0, "addic", 0 }, 79*4882a593Smuzhiyun { D_OPCODE(13), D_MASK, {O_rD, O_rA, O_SIMM, 0}, 80*4882a593Smuzhiyun 0, "addic.", 0 }, 81*4882a593Smuzhiyun { D_OPCODE(14), D_MASK, {O_rD, O_rA, O_SIMM, 0}, 82*4882a593Smuzhiyun 0, "addi", H_RA0_IS_0 }, 83*4882a593Smuzhiyun { D_OPCODE(15), D_MASK, {O_rD, O_rA, O_SIMM, 0}, 84*4882a593Smuzhiyun 0, "addis", H_RA0_IS_0|H_IMM_HIGH }, 85*4882a593Smuzhiyun { B_OPCODE(16,0,0), B_MASK, {O_BO, O_BI, O_BD, O_AA, O_LK, 0}, 86*4882a593Smuzhiyun handle_bc, "bc", H_RELATIVE }, 87*4882a593Smuzhiyun { B_OPCODE(16,0,1), B_MASK, {O_BO, O_BI, O_BD, O_AA, O_LK, 0}, 88*4882a593Smuzhiyun 0, "bcl", H_RELATIVE }, 89*4882a593Smuzhiyun { B_OPCODE(16,1,0), B_MASK, {O_BO, O_BI, O_BD, O_AA, O_LK, 0}, 90*4882a593Smuzhiyun 0, "bca", 0 }, 91*4882a593Smuzhiyun { B_OPCODE(16,1,1), B_MASK, {O_BO, O_BI, O_BD, O_AA, O_LK, 0}, 92*4882a593Smuzhiyun 0, "bcla", 0 }, 93*4882a593Smuzhiyun { SC_OPCODE(17), SC_MASK, {0}, 94*4882a593Smuzhiyun 0, "sc", 0 }, 95*4882a593Smuzhiyun { I_OPCODE(18,0,0), I_MASK, {O_LI, O_AA, O_LK, 0}, 96*4882a593Smuzhiyun 0, "b", H_RELATIVE }, 97*4882a593Smuzhiyun { I_OPCODE(18,0,1), I_MASK, {O_LI, O_AA, O_LK, 0}, 98*4882a593Smuzhiyun 0, "bl", H_RELATIVE }, 99*4882a593Smuzhiyun { I_OPCODE(18,1,0), I_MASK, {O_LI, O_AA, O_LK, 0}, 100*4882a593Smuzhiyun 0, "ba", 0 }, 101*4882a593Smuzhiyun { I_OPCODE(18,1,1), I_MASK, {O_LI, O_AA, O_LK, 0}, 102*4882a593Smuzhiyun 0, "bla", 0 }, 103*4882a593Smuzhiyun { XL_OPCODE(19,0,0), XL_MASK, {O_crfD, O_crfS}, 104*4882a593Smuzhiyun 0, "mcrf", 0 }, 105*4882a593Smuzhiyun { XL_OPCODE(19,16,0), XL_MASK, {O_BO, O_BI, O_LK, 0}, 106*4882a593Smuzhiyun 0, "bclr", 0 }, 107*4882a593Smuzhiyun { XL_OPCODE(19,16,1), XL_MASK, {O_BO, O_BI, O_LK, 0}, 108*4882a593Smuzhiyun 0, "bclrl", 0 }, 109*4882a593Smuzhiyun { XL_OPCODE(19,33,0), XL_MASK, {O_crbD, O_crbA, O_crbB, 0}, 110*4882a593Smuzhiyun 0, "crnor", 0 }, 111*4882a593Smuzhiyun { XL_OPCODE(19,50,0), XL_MASK, {0}, 112*4882a593Smuzhiyun 0, "rfi", 0 }, 113*4882a593Smuzhiyun { XL_OPCODE(19,129,0), XL_MASK, {O_crbD, O_crbA, O_crbB, 0}, 114*4882a593Smuzhiyun 0, "crandc", 0 }, 115*4882a593Smuzhiyun { XL_OPCODE(19,150,0), XL_MASK, {0}, 116*4882a593Smuzhiyun 0, "isync", 0 }, 117*4882a593Smuzhiyun { XL_OPCODE(19,193,0), XL_MASK, {O_crbD, O_crbA, O_crbB, 0}, 118*4882a593Smuzhiyun 0, "crxor", 0 }, 119*4882a593Smuzhiyun { XL_OPCODE(19,225,0), XL_MASK, {O_crbD, O_crbA, O_crbB, 0}, 120*4882a593Smuzhiyun 0, "crnand", 0 }, 121*4882a593Smuzhiyun { XL_OPCODE(19,257,0), XL_MASK, {O_crbD, O_crbA, O_crbB, 0}, 122*4882a593Smuzhiyun 0, "crand", 0 }, 123*4882a593Smuzhiyun { XL_OPCODE(19,289,0), XL_MASK, {O_crbD, O_crbA, O_crbB, 0}, 124*4882a593Smuzhiyun 0, "creqv", 0 }, 125*4882a593Smuzhiyun { XL_OPCODE(19,417,0), XL_MASK, {O_crbD, O_crbA, O_crbB, 0}, 126*4882a593Smuzhiyun 0, "crorc", 0 }, 127*4882a593Smuzhiyun { XL_OPCODE(19,449,0), XL_MASK, {O_crbD, O_crbA, O_crbB, 0}, 128*4882a593Smuzhiyun 0, "cror", 0 }, 129*4882a593Smuzhiyun { XL_OPCODE(19,528,0), XL_MASK, {O_BO, O_BI, O_LK, 0}, 130*4882a593Smuzhiyun 0, "bcctr", 0 }, 131*4882a593Smuzhiyun { XL_OPCODE(19,528,1), XL_MASK, {O_BO, O_BI, O_LK, 0}, 132*4882a593Smuzhiyun 0, "bcctrl", 0 }, 133*4882a593Smuzhiyun { M_OPCODE(20,0), M_MASK, {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0}, 134*4882a593Smuzhiyun 0, "rlwimi", 0 }, 135*4882a593Smuzhiyun { M_OPCODE(20,1), M_MASK, {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0}, 136*4882a593Smuzhiyun 0, "rlwimi.", 0 }, 137*4882a593Smuzhiyun { M_OPCODE(21,0), M_MASK, {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0}, 138*4882a593Smuzhiyun 0, "rlwinm", 0 }, 139*4882a593Smuzhiyun { M_OPCODE(21,1), M_MASK, {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0}, 140*4882a593Smuzhiyun 0, "rlwinm.", 0 }, 141*4882a593Smuzhiyun { M_OPCODE(23,0), M_MASK, {O_rA, O_rS, O_rB, O_MB, O_ME, O_Rc, 0}, 142*4882a593Smuzhiyun 0, "rlwnm", 0 }, 143*4882a593Smuzhiyun { M_OPCODE(23,1), M_MASK, {O_rA, O_rS, O_rB, O_MB, O_ME, O_Rc, 0}, 144*4882a593Smuzhiyun 0, "rlwnm.", 0 }, 145*4882a593Smuzhiyun { D_OPCODE(24), D_MASK, {O_rA, O_rS, O_UIMM, 0}, 146*4882a593Smuzhiyun 0, "ori", 0 }, 147*4882a593Smuzhiyun { D_OPCODE(25), D_MASK, {O_rA, O_rS, O_UIMM, 0}, 148*4882a593Smuzhiyun 0, "oris", H_IMM_HIGH }, 149*4882a593Smuzhiyun { D_OPCODE(26), D_MASK, {O_rA, O_rS, O_UIMM, 0}, 150*4882a593Smuzhiyun 0, "xori", 0 }, 151*4882a593Smuzhiyun { D_OPCODE(27), D_MASK, {O_rA, O_rS, O_UIMM, 0}, 152*4882a593Smuzhiyun 0, "xoris", H_IMM_HIGH }, 153*4882a593Smuzhiyun { D_OPCODE(28), D_MASK, {O_rA, O_rS, O_UIMM, 0}, 154*4882a593Smuzhiyun 0, "andi.", 0 }, 155*4882a593Smuzhiyun { D_OPCODE(29), D_MASK, {O_rA, O_rS, O_UIMM, 0}, 156*4882a593Smuzhiyun 0, "andis.", H_IMM_HIGH }, 157*4882a593Smuzhiyun { X_OPCODE(31,0,0), X_MASK, {O_crfD, O_L, O_rA, O_rB, 0}, 158*4882a593Smuzhiyun 0, "cmp", 0 }, 159*4882a593Smuzhiyun { X_OPCODE(31,4,0), X_MASK, {O_TO, O_rA, O_rB, 0}, 160*4882a593Smuzhiyun 0, "tw", 0 }, 161*4882a593Smuzhiyun { XO_OPCODE(31,8,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 162*4882a593Smuzhiyun 0, "subfc", 0 }, 163*4882a593Smuzhiyun { XO_OPCODE(31,8,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 164*4882a593Smuzhiyun 0, "subfc.", 0 }, 165*4882a593Smuzhiyun { XO_OPCODE(31,10,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 166*4882a593Smuzhiyun 0, "addc", 0 }, 167*4882a593Smuzhiyun { XO_OPCODE(31,10,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 168*4882a593Smuzhiyun 0, "addc.", 0 }, 169*4882a593Smuzhiyun { XO_OPCODE(31,11,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_Rc, 0}, 170*4882a593Smuzhiyun 0, "mulhwu", 0 }, 171*4882a593Smuzhiyun { XO_OPCODE(31,11,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_Rc, 0}, 172*4882a593Smuzhiyun 0, "mulhwu.", 0 }, 173*4882a593Smuzhiyun { X_OPCODE(31,19,0), X_MASK, {O_rD, 0}, 174*4882a593Smuzhiyun 0, "mfcr", 0 }, 175*4882a593Smuzhiyun { X_OPCODE(31,20,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 176*4882a593Smuzhiyun 0, "lwarx", H_RA0_IS_0 }, 177*4882a593Smuzhiyun { X_OPCODE(31,23,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 178*4882a593Smuzhiyun 0, "lwzx", H_RA0_IS_0 }, 179*4882a593Smuzhiyun { X_OPCODE(31,24,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 180*4882a593Smuzhiyun 0, "slw", 0 }, 181*4882a593Smuzhiyun { X_OPCODE(31,24,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 182*4882a593Smuzhiyun 0, "slw.", 0 }, 183*4882a593Smuzhiyun { X_OPCODE(31,26,0), X_MASK, {O_rA, O_rS, O_Rc, 0 }, 184*4882a593Smuzhiyun 0, "cntlzw", 0 }, 185*4882a593Smuzhiyun { X_OPCODE(31,26,1), X_MASK, {O_rA, O_rS, O_Rc, 0}, 186*4882a593Smuzhiyun 0, "cntlzw.", 0 }, 187*4882a593Smuzhiyun { X_OPCODE(31,28,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 188*4882a593Smuzhiyun 0, "and", 0 }, 189*4882a593Smuzhiyun { X_OPCODE(31,28,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 190*4882a593Smuzhiyun 0, "and.", 0 }, 191*4882a593Smuzhiyun { X_OPCODE(31,32,0), X_MASK, {O_crfD, O_L, O_rA, O_rB, 0}, 192*4882a593Smuzhiyun 0, "cmpl", 0 }, 193*4882a593Smuzhiyun { XO_OPCODE(31,40,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 194*4882a593Smuzhiyun 0, "subf", 0 }, 195*4882a593Smuzhiyun { XO_OPCODE(31,40,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 196*4882a593Smuzhiyun 0, "subf.", 0 }, 197*4882a593Smuzhiyun { X_OPCODE(31,54,0), X_MASK, {O_rA, O_rB, 0}, 198*4882a593Smuzhiyun 0, "dcbst", H_RA0_IS_0 }, 199*4882a593Smuzhiyun { X_OPCODE(31,55,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 200*4882a593Smuzhiyun 0, "lwzux", 0 }, 201*4882a593Smuzhiyun { X_OPCODE(31,60,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 202*4882a593Smuzhiyun 0, "andc", 0 }, 203*4882a593Smuzhiyun { X_OPCODE(31,60,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 204*4882a593Smuzhiyun 0, "andc.", 0 }, 205*4882a593Smuzhiyun { XO_OPCODE(31,75,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_Rc, 0}, 206*4882a593Smuzhiyun 0, "mulhw", 0 }, 207*4882a593Smuzhiyun { XO_OPCODE(31,75,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_Rc, 0}, 208*4882a593Smuzhiyun 0, "mulhw.", 0 }, 209*4882a593Smuzhiyun { X_OPCODE(31,83,0), X_MASK, {O_rD, 0}, 210*4882a593Smuzhiyun 0, "mfmsr", 0 }, 211*4882a593Smuzhiyun { X_OPCODE(31,86,0), X_MASK, {O_rA, O_rB, 0}, 212*4882a593Smuzhiyun 0, "dcbf", H_RA0_IS_0 }, 213*4882a593Smuzhiyun { X_OPCODE(31,87,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 214*4882a593Smuzhiyun 0, "lbzx", H_RA0_IS_0 }, 215*4882a593Smuzhiyun { XO_OPCODE(31,104,0,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 216*4882a593Smuzhiyun 0, "neg", 0 }, 217*4882a593Smuzhiyun { XO_OPCODE(31,104,0,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 218*4882a593Smuzhiyun 0, "neg.", 0 }, 219*4882a593Smuzhiyun { X_OPCODE(31,119,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 220*4882a593Smuzhiyun 0, "lbzux", 0 }, 221*4882a593Smuzhiyun { X_OPCODE(31,124,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 222*4882a593Smuzhiyun 0, "nor", 0 }, 223*4882a593Smuzhiyun { X_OPCODE(31,124,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 224*4882a593Smuzhiyun 0, "nor.", 0 }, 225*4882a593Smuzhiyun { XO_OPCODE(31,136,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 226*4882a593Smuzhiyun 0, "subfe", 0 }, 227*4882a593Smuzhiyun { XO_OPCODE(31,136,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 228*4882a593Smuzhiyun 0, "subfe.", 0 }, 229*4882a593Smuzhiyun { XO_OPCODE(31,138,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 230*4882a593Smuzhiyun 0, "adde", 0 }, 231*4882a593Smuzhiyun { XO_OPCODE(31,138,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 232*4882a593Smuzhiyun 0, "adde.", 0 }, 233*4882a593Smuzhiyun { XFX_OPCODE(31,144,0), XFX_MASK, {O_CRM, O_rS, 0}, 234*4882a593Smuzhiyun 0, "mtcrf", 0 }, 235*4882a593Smuzhiyun { X_OPCODE(31,146,0), X_MASK, {O_rS, 0}, 236*4882a593Smuzhiyun 0, "mtmsr", 0 }, 237*4882a593Smuzhiyun { X_OPCODE(31,150,1), X_MASK, {O_rS, O_rA, O_rB, 0}, 238*4882a593Smuzhiyun 0, "stwcx.", 0 }, 239*4882a593Smuzhiyun { X_OPCODE(31,151,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 240*4882a593Smuzhiyun 0, "stwx", 0 }, 241*4882a593Smuzhiyun { X_OPCODE(31,183,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 242*4882a593Smuzhiyun 0, "stwux", 0 }, 243*4882a593Smuzhiyun { XO_OPCODE(31,200,0,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 244*4882a593Smuzhiyun 0, "subfze", 0 }, 245*4882a593Smuzhiyun { XO_OPCODE(31,200,0,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 246*4882a593Smuzhiyun 0, "subfze.", 0 }, 247*4882a593Smuzhiyun { XO_OPCODE(31,202,0,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 248*4882a593Smuzhiyun 0, "addze", 0 }, 249*4882a593Smuzhiyun { XO_OPCODE(31,202,0,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 250*4882a593Smuzhiyun 0, "addze.", 0 }, 251*4882a593Smuzhiyun { X_OPCODE(31,210,0), X_MASK, {O_SR, O_rS, 0}, 252*4882a593Smuzhiyun 0, "mtsr", 0 }, 253*4882a593Smuzhiyun { X_OPCODE(31,215,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 254*4882a593Smuzhiyun 0, "stbx", H_RA0_IS_0 }, 255*4882a593Smuzhiyun { XO_OPCODE(31,232,0,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 256*4882a593Smuzhiyun 0, "subfme", 0 }, 257*4882a593Smuzhiyun { XO_OPCODE(31,232,0,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 258*4882a593Smuzhiyun 0, "subfme.", 0 }, 259*4882a593Smuzhiyun { XO_OPCODE(31,234,0,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 260*4882a593Smuzhiyun 0, "addme", 0 }, 261*4882a593Smuzhiyun { XO_OPCODE(31,234,0,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 262*4882a593Smuzhiyun 0, "addme.", 0 }, 263*4882a593Smuzhiyun { XO_OPCODE(31,235,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 264*4882a593Smuzhiyun 0, "mullw", 0 }, 265*4882a593Smuzhiyun { XO_OPCODE(31,235,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 266*4882a593Smuzhiyun 0, "mullw.", 0 }, 267*4882a593Smuzhiyun { X_OPCODE(31,242,0), X_MASK, {O_rS, O_rB, 0}, 268*4882a593Smuzhiyun 0, "mtsrin", 0 }, 269*4882a593Smuzhiyun { X_OPCODE(31,246,0), X_MASK, {O_rA, O_rB, 0}, 270*4882a593Smuzhiyun 0, "dcbtst", H_RA0_IS_0 }, 271*4882a593Smuzhiyun { X_OPCODE(31,247,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 272*4882a593Smuzhiyun 0, "stbux", 0 }, 273*4882a593Smuzhiyun { XO_OPCODE(31,266,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 274*4882a593Smuzhiyun 0, "add", 0 }, 275*4882a593Smuzhiyun { XO_OPCODE(31,266,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 276*4882a593Smuzhiyun 0, "add.", 0 }, 277*4882a593Smuzhiyun { X_OPCODE(31,278,0), X_MASK, {O_rA, O_rB, 0}, 278*4882a593Smuzhiyun 0, "dcbt", H_RA0_IS_0 }, 279*4882a593Smuzhiyun { X_OPCODE(31,279,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 280*4882a593Smuzhiyun 0, "lhzx", H_RA0_IS_0 }, 281*4882a593Smuzhiyun { X_OPCODE(31,284,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 282*4882a593Smuzhiyun 0, "eqv", 0 }, 283*4882a593Smuzhiyun { X_OPCODE(31,284,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 284*4882a593Smuzhiyun 0, "eqv.", 0 }, 285*4882a593Smuzhiyun { X_OPCODE(31,306,0), X_MASK, {O_rB, 0}, 286*4882a593Smuzhiyun 0, "tlbie", 0 }, 287*4882a593Smuzhiyun { X_OPCODE(31,310,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 288*4882a593Smuzhiyun 0, "eciwx", H_RA0_IS_0 }, 289*4882a593Smuzhiyun { X_OPCODE(31,311,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 290*4882a593Smuzhiyun 0, "lhzux", 0 }, 291*4882a593Smuzhiyun { X_OPCODE(31,316,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 292*4882a593Smuzhiyun 0, "xor", 0 }, 293*4882a593Smuzhiyun { X_OPCODE(31,316,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 294*4882a593Smuzhiyun 0, "xor.", 0 }, 295*4882a593Smuzhiyun { XFX_OPCODE(31,339,0), XFX_MASK, {O_rD, O_spr, 0}, 296*4882a593Smuzhiyun 0, "mfspr", 0 }, 297*4882a593Smuzhiyun { X_OPCODE(31,343,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 298*4882a593Smuzhiyun 0, "lhax", H_RA0_IS_0 }, 299*4882a593Smuzhiyun { X_OPCODE(31,370,0), X_MASK, {0}, 300*4882a593Smuzhiyun 0, "tlbia", 0 }, 301*4882a593Smuzhiyun { XFX_OPCODE(31,371,0), XFX_MASK, {O_rD, O_tbr, 0}, 302*4882a593Smuzhiyun 0, "mftb", 0 }, 303*4882a593Smuzhiyun { X_OPCODE(31,375,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 304*4882a593Smuzhiyun 0, "lhaux", 0 }, 305*4882a593Smuzhiyun { X_OPCODE(31,407,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 306*4882a593Smuzhiyun 0, "sthx", H_RA0_IS_0 }, 307*4882a593Smuzhiyun { X_OPCODE(31,412,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 308*4882a593Smuzhiyun 0, "orc", 0 }, 309*4882a593Smuzhiyun { X_OPCODE(31,412,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 310*4882a593Smuzhiyun 0, "orc.", 0 }, 311*4882a593Smuzhiyun { X_OPCODE(31,438,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 312*4882a593Smuzhiyun 0, "ecowx", H_RA0_IS_0 }, 313*4882a593Smuzhiyun { X_OPCODE(31,439,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 314*4882a593Smuzhiyun 0, "sthux", 0 }, 315*4882a593Smuzhiyun { X_OPCODE(31,444,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 316*4882a593Smuzhiyun 0, "or", 0 }, 317*4882a593Smuzhiyun { X_OPCODE(31,444,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 318*4882a593Smuzhiyun 0, "or.", 0 }, 319*4882a593Smuzhiyun { XO_OPCODE(31,459,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 320*4882a593Smuzhiyun 0, "divwu", 0 }, 321*4882a593Smuzhiyun { XO_OPCODE(31,459,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 322*4882a593Smuzhiyun 0, "divwu.", 0 }, 323*4882a593Smuzhiyun { XFX_OPCODE(31,467,0), XFX_MASK, {O_spr, O_rS, 0}, 324*4882a593Smuzhiyun 0, "mtspr", 0 }, 325*4882a593Smuzhiyun { X_OPCODE(31,470,0), X_MASK, {O_rA, O_rB, 0}, 326*4882a593Smuzhiyun 0, "dcbi", H_RA0_IS_0 }, 327*4882a593Smuzhiyun { X_OPCODE(31,476,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 328*4882a593Smuzhiyun 0, "nand", 0 }, 329*4882a593Smuzhiyun { X_OPCODE(31,476,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc,0}, 330*4882a593Smuzhiyun 0, "nand.", 0 }, 331*4882a593Smuzhiyun { XO_OPCODE(31,491,0,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 332*4882a593Smuzhiyun 0, "divw", 0 }, 333*4882a593Smuzhiyun { XO_OPCODE(31,491,0,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 334*4882a593Smuzhiyun 0, "divw.", 0 }, 335*4882a593Smuzhiyun { X_OPCODE(31,512,0), X_MASK, {O_crfD, 0}, 336*4882a593Smuzhiyun 0, "mcrxr", 0 }, 337*4882a593Smuzhiyun { XO_OPCODE(31,8,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 338*4882a593Smuzhiyun 0, "subfco", 0 }, 339*4882a593Smuzhiyun { XO_OPCODE(31,8,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 340*4882a593Smuzhiyun 0, "subfco.", 0 }, 341*4882a593Smuzhiyun { XO_OPCODE(31,10,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 342*4882a593Smuzhiyun 0, "addco", 0 }, 343*4882a593Smuzhiyun { XO_OPCODE(31,10,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 344*4882a593Smuzhiyun 0, "addco.", 0 }, 345*4882a593Smuzhiyun { X_OPCODE(31,533,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 346*4882a593Smuzhiyun 0, "lswx", H_RA0_IS_0 }, 347*4882a593Smuzhiyun { X_OPCODE(31,534,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 348*4882a593Smuzhiyun 0, "lwbrx", H_RA0_IS_0 }, 349*4882a593Smuzhiyun { X_OPCODE(31,536,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 350*4882a593Smuzhiyun 0, "srw", 0 }, 351*4882a593Smuzhiyun { X_OPCODE(31,536,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 352*4882a593Smuzhiyun 0, "srw.", 0 }, 353*4882a593Smuzhiyun { XO_OPCODE(31,40,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 354*4882a593Smuzhiyun 0, "subfo", 0 }, 355*4882a593Smuzhiyun { XO_OPCODE(31,40,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 356*4882a593Smuzhiyun 0, "subfo.", 0 }, 357*4882a593Smuzhiyun { X_OPCODE(31,566,0), X_MASK, {0}, 358*4882a593Smuzhiyun 0, "tlbsync", 0 }, 359*4882a593Smuzhiyun { X_OPCODE(31,595,0), X_MASK, {O_rD, O_SR, 0}, 360*4882a593Smuzhiyun 0, "mfsr", 0 }, 361*4882a593Smuzhiyun { X_OPCODE(31,597,0), X_MASK, {O_rD, O_rA, O_NB, 0}, 362*4882a593Smuzhiyun 0, "lswi", H_RA0_IS_0 }, 363*4882a593Smuzhiyun { X_OPCODE(31,598,0), X_MASK, {0}, 364*4882a593Smuzhiyun 0, "sync", 0 }, 365*4882a593Smuzhiyun { XO_OPCODE(31,104,1,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 366*4882a593Smuzhiyun 0, "nego", 0 }, 367*4882a593Smuzhiyun { XO_OPCODE(31,104,1,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 368*4882a593Smuzhiyun 0, "nego.", 0 }, 369*4882a593Smuzhiyun { XO_OPCODE(31,136,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 370*4882a593Smuzhiyun 0, "subfeo", 0 }, 371*4882a593Smuzhiyun { XO_OPCODE(31,136,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 372*4882a593Smuzhiyun 0, "subfeo.", 0 }, 373*4882a593Smuzhiyun { XO_OPCODE(31,138,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 374*4882a593Smuzhiyun 0, "addeo", 0 }, 375*4882a593Smuzhiyun { XO_OPCODE(31,138,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 376*4882a593Smuzhiyun 0, "addeo.", 0 }, 377*4882a593Smuzhiyun { X_OPCODE(31,659,0), X_MASK, {O_rD, O_rB, 0}, 378*4882a593Smuzhiyun 0, "mfsrin", 0 }, 379*4882a593Smuzhiyun { X_OPCODE(31,661,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 380*4882a593Smuzhiyun 0, "stswx", H_RA0_IS_0 }, 381*4882a593Smuzhiyun { X_OPCODE(31,662,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 382*4882a593Smuzhiyun 0, "stwbrx", H_RA0_IS_0 }, 383*4882a593Smuzhiyun { XO_OPCODE(31,200,1,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 384*4882a593Smuzhiyun 0, "subfzeo", 0 }, 385*4882a593Smuzhiyun { XO_OPCODE(31,200,1,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 386*4882a593Smuzhiyun 0, "subfzeo.", 0 }, 387*4882a593Smuzhiyun { XO_OPCODE(31,202,1,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 388*4882a593Smuzhiyun 0, "addzeo", 0 }, 389*4882a593Smuzhiyun { XO_OPCODE(31,202,1,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 390*4882a593Smuzhiyun 0, "addzeo.", 0 }, 391*4882a593Smuzhiyun { X_OPCODE(31,725,0), X_MASK, {O_rS, O_rA, O_NB, 0}, 392*4882a593Smuzhiyun 0, "stswi", H_RA0_IS_0 }, 393*4882a593Smuzhiyun { XO_OPCODE(31,232,1,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 394*4882a593Smuzhiyun 0, "subfmeo", 0 }, 395*4882a593Smuzhiyun { XO_OPCODE(31,232,1,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 396*4882a593Smuzhiyun 0, "subfmeo.", 0 }, 397*4882a593Smuzhiyun { XO_OPCODE(31,234,1,0), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 398*4882a593Smuzhiyun 0, "addmeo", 0 }, 399*4882a593Smuzhiyun { XO_OPCODE(31,234,1,1), XO_MASK, {O_rD, O_rA, O_OE, O_Rc, 0}, 400*4882a593Smuzhiyun 0, "addmeo.", 0 }, 401*4882a593Smuzhiyun { XO_OPCODE(31,235,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 402*4882a593Smuzhiyun 0, "mullwo", 0 }, 403*4882a593Smuzhiyun { XO_OPCODE(31,235,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 404*4882a593Smuzhiyun 0, "mullwo.", 0 }, 405*4882a593Smuzhiyun { XO_OPCODE(31,266,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 406*4882a593Smuzhiyun 0, "addo", 0 }, 407*4882a593Smuzhiyun { XO_OPCODE(31,266,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 408*4882a593Smuzhiyun 0, "addo.", 0 }, 409*4882a593Smuzhiyun { X_OPCODE(31,790,0), X_MASK, {O_rD, O_rA, O_rB, 0}, 410*4882a593Smuzhiyun 0, "lhbrx", H_RA0_IS_0 }, 411*4882a593Smuzhiyun { X_OPCODE(31,792,0), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 412*4882a593Smuzhiyun 0, "sraw", 0 }, 413*4882a593Smuzhiyun { X_OPCODE(31,792,1), X_MASK, {O_rA, O_rS, O_rB, O_Rc, 0}, 414*4882a593Smuzhiyun 0, "sraw.", 0 }, 415*4882a593Smuzhiyun { X_OPCODE(31,824,0), X_MASK, {O_rA, O_rS, O_SH, O_Rc, 0}, 416*4882a593Smuzhiyun 0, "srawi", 0 }, 417*4882a593Smuzhiyun { X_OPCODE(31,824,1), X_MASK, {O_rA, O_rS, O_SH, O_Rc, 0}, 418*4882a593Smuzhiyun 0, "srawi.", 0 }, 419*4882a593Smuzhiyun { X_OPCODE(31,854,0), X_MASK, {0}, 420*4882a593Smuzhiyun 0, "eieio", 0 }, 421*4882a593Smuzhiyun { X_OPCODE(31,918,0), X_MASK, {O_rS, O_rA, O_rB, 0}, 422*4882a593Smuzhiyun 0, "sthbrx", H_RA0_IS_0 }, 423*4882a593Smuzhiyun { X_OPCODE(31,922,0), X_MASK, {O_rA, O_rS, O_Rc, 0}, 424*4882a593Smuzhiyun 0, "extsh", 0 }, 425*4882a593Smuzhiyun { X_OPCODE(31,922,1), X_MASK, {O_rA, O_rS, O_Rc, 0}, 426*4882a593Smuzhiyun 0, "extsh.", 0 }, 427*4882a593Smuzhiyun { X_OPCODE(31,954,0), X_MASK, {O_rA, O_rS, O_Rc, 0}, 428*4882a593Smuzhiyun 0, "extsb", 0 }, 429*4882a593Smuzhiyun { X_OPCODE(31,954,1), X_MASK, {O_rA, O_rS, O_Rc, 0}, 430*4882a593Smuzhiyun 0, "extsb.", 0 }, 431*4882a593Smuzhiyun { XO_OPCODE(31,459,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 432*4882a593Smuzhiyun 0, "divwuo", 0 }, 433*4882a593Smuzhiyun { XO_OPCODE(31,459,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 434*4882a593Smuzhiyun 0, "divwuo.", 0 }, 435*4882a593Smuzhiyun { X_OPCODE(31,978,0), X_MASK, {O_rB, 0}, 436*4882a593Smuzhiyun 0, "tlbld", 0 }, 437*4882a593Smuzhiyun { X_OPCODE(31,982,0), X_MASK, {O_rA, O_rB, 0}, 438*4882a593Smuzhiyun 0, "icbi", H_RA0_IS_0 }, 439*4882a593Smuzhiyun { XO_OPCODE(31,491,1,0), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 440*4882a593Smuzhiyun 0, "divwo", 0 }, 441*4882a593Smuzhiyun { XO_OPCODE(31,491,1,1), XO_MASK, {O_rD, O_rA, O_rB, O_OE, O_Rc, 0}, 442*4882a593Smuzhiyun 0, "divwo.", 0 }, 443*4882a593Smuzhiyun { X_OPCODE(31,1010,0), X_MASK, {O_rB, 0}, 444*4882a593Smuzhiyun 0, "tlbli", 0 }, 445*4882a593Smuzhiyun { X_OPCODE(31,1014,0), X_MASK, {O_rA, O_rB, 0}, 446*4882a593Smuzhiyun 0, "dcbz", H_RA0_IS_0 }, 447*4882a593Smuzhiyun { D_OPCODE(32), D_MASK, {O_rD, O_d, O_rA, 0}, 448*4882a593Smuzhiyun 0, "lwz", H_RA0_IS_0 }, 449*4882a593Smuzhiyun { D_OPCODE(33), D_MASK, {O_rD, O_d, O_rA, 0}, 450*4882a593Smuzhiyun 0, "lwzu", 0 }, 451*4882a593Smuzhiyun { D_OPCODE(34), D_MASK, {O_rD, O_d, O_rA, 0}, 452*4882a593Smuzhiyun 0, "lbz", H_RA0_IS_0 }, 453*4882a593Smuzhiyun { D_OPCODE(35), D_MASK, {O_rD, O_d, O_rA, 0}, 454*4882a593Smuzhiyun 0, "lbzu", 0 }, 455*4882a593Smuzhiyun { D_OPCODE(36), D_MASK, {O_rS, O_d, O_rA, 0}, 456*4882a593Smuzhiyun 0, "stw", H_RA0_IS_0 }, 457*4882a593Smuzhiyun { D_OPCODE(37), D_MASK, {O_rS, O_d, O_rA, 0}, 458*4882a593Smuzhiyun 0, "stwu", 0 }, 459*4882a593Smuzhiyun { D_OPCODE(38), D_MASK, {O_rS, O_d, O_rA, 0}, 460*4882a593Smuzhiyun 0, "stb", H_RA0_IS_0 }, 461*4882a593Smuzhiyun { D_OPCODE(39), D_MASK, {O_rS, O_d, O_rA, 0}, 462*4882a593Smuzhiyun 0, "stbu", 0 }, 463*4882a593Smuzhiyun { D_OPCODE(40), D_MASK, {O_rD, O_d, O_rA, 0}, 464*4882a593Smuzhiyun 0, "lhz", H_RA0_IS_0 }, 465*4882a593Smuzhiyun { D_OPCODE(41), D_MASK, {O_rD, O_d, O_rA, 0}, 466*4882a593Smuzhiyun 0, "lhzu", 0 }, 467*4882a593Smuzhiyun { D_OPCODE(42), D_MASK, {O_rD, O_d, O_rA, 0}, 468*4882a593Smuzhiyun 0, "lha", H_RA0_IS_0 }, 469*4882a593Smuzhiyun { D_OPCODE(43), D_MASK, {O_rD, O_d, O_rA, 0}, 470*4882a593Smuzhiyun 0, "lhau", 0 }, 471*4882a593Smuzhiyun { D_OPCODE(44), D_MASK, {O_rS, O_d, O_rA, 0}, 472*4882a593Smuzhiyun 0, "sth", H_RA0_IS_0 }, 473*4882a593Smuzhiyun { D_OPCODE(45), D_MASK, {O_rS, O_d, O_rA, 0}, 474*4882a593Smuzhiyun 0, "sthu", 0 }, 475*4882a593Smuzhiyun { D_OPCODE(46), D_MASK, {O_rD, O_d, O_rA, 0}, 476*4882a593Smuzhiyun 0, "lmw", H_RA0_IS_0 }, 477*4882a593Smuzhiyun { D_OPCODE(47), D_MASK, {O_rS, O_d, O_rA, 0}, 478*4882a593Smuzhiyun 0, "stmw", H_RA0_IS_0 }, 479*4882a593Smuzhiyun }; 480*4882a593Smuzhiyun 481*4882a593Smuzhiyun const unsigned int n_opcodes = sizeof(opcodes) / sizeof(opcodes[0]); 482*4882a593Smuzhiyun 483*4882a593Smuzhiyun struct spr_info spr_map[] = { 484*4882a593Smuzhiyun { SPR_XER, "XER" }, 485*4882a593Smuzhiyun { SPR_LR, "LR" }, 486*4882a593Smuzhiyun { SPR_CTR, "CTR" }, 487*4882a593Smuzhiyun { SPR_DSISR, "DSISR" }, 488*4882a593Smuzhiyun { SPR_DAR, "DAR" }, 489*4882a593Smuzhiyun { SPR_DEC, "DEC" }, 490*4882a593Smuzhiyun { SPR_SRR0, "SRR0" }, 491*4882a593Smuzhiyun { SPR_SRR1, "SRR1" }, 492*4882a593Smuzhiyun { SPR_EIE, "EIE" }, 493*4882a593Smuzhiyun { SPR_EID, "EID" }, 494*4882a593Smuzhiyun { SPR_CMPA, "CMPA" }, 495*4882a593Smuzhiyun { SPR_CMPB, "CMPB" }, 496*4882a593Smuzhiyun { SPR_CMPC, "CMPC" }, 497*4882a593Smuzhiyun { SPR_CMPD, "CMPD" }, 498*4882a593Smuzhiyun { SPR_ICR, "ICR" }, 499*4882a593Smuzhiyun { SPR_DER, "DER" }, 500*4882a593Smuzhiyun { SPR_COUNTA, "COUNTA" }, 501*4882a593Smuzhiyun { SPR_COUNTB, "COUNTB" }, 502*4882a593Smuzhiyun { SPR_CMPE, "CMPE" }, 503*4882a593Smuzhiyun { SPR_CMPF, "CMPF" }, 504*4882a593Smuzhiyun { SPR_CMPG, "CMPG" }, 505*4882a593Smuzhiyun { SPR_CMPH, "CMPH" }, 506*4882a593Smuzhiyun { SPR_LCTRL1, "LCTRL1" }, 507*4882a593Smuzhiyun { SPR_LCTRL2, "LCTRL2" }, 508*4882a593Smuzhiyun { SPR_ICTRL, "ICTRL" }, 509*4882a593Smuzhiyun { SPR_BAR, "BAR" }, 510*4882a593Smuzhiyun { SPR_USPRG0, "USPRG0" }, 511*4882a593Smuzhiyun { SPR_SPRG4_RO, "SPRG4_RO" }, 512*4882a593Smuzhiyun { SPR_SPRG5_RO, "SPRG5_RO" }, 513*4882a593Smuzhiyun { SPR_SPRG6_RO, "SPRG6_RO" }, 514*4882a593Smuzhiyun { SPR_SPRG7_RO, "SPRG7_RO" }, 515*4882a593Smuzhiyun { SPR_SPRG0, "SPRG0" }, 516*4882a593Smuzhiyun { SPR_SPRG1, "SPRG1" }, 517*4882a593Smuzhiyun { SPR_SPRG2, "SPRG2" }, 518*4882a593Smuzhiyun { SPR_SPRG3, "SPRG3" }, 519*4882a593Smuzhiyun { SPR_SPRG4, "SPRG4" }, 520*4882a593Smuzhiyun { SPR_SPRG5, "SPRG5" }, 521*4882a593Smuzhiyun { SPR_SPRG6, "SPRG6" }, 522*4882a593Smuzhiyun { SPR_SPRG7, "SPRG7" }, 523*4882a593Smuzhiyun { SPR_EAR, "EAR" }, 524*4882a593Smuzhiyun { SPR_TBL, "TBL" }, 525*4882a593Smuzhiyun { SPR_TBU, "TBU" }, 526*4882a593Smuzhiyun { SPR_IC_CST, "IC_CST" }, 527*4882a593Smuzhiyun { SPR_IC_ADR, "IC_ADR" }, 528*4882a593Smuzhiyun { SPR_IC_DAT, "IC_DAT" }, 529*4882a593Smuzhiyun { SPR_DC_CST, "DC_CST" }, 530*4882a593Smuzhiyun { SPR_DC_ADR, "DC_ADR" }, 531*4882a593Smuzhiyun { SPR_DC_DAT, "DC_DAT" }, 532*4882a593Smuzhiyun { SPR_DPDR, "DPDR" }, 533*4882a593Smuzhiyun { SPR_IMMR, "IMMR" }, 534*4882a593Smuzhiyun { SPR_MI_CTR, "MI_CTR" }, 535*4882a593Smuzhiyun { SPR_MI_AP, "MI_AP" }, 536*4882a593Smuzhiyun { SPR_MI_EPN, "MI_EPN" }, 537*4882a593Smuzhiyun { SPR_MI_TWC, "MI_TWC" }, 538*4882a593Smuzhiyun { SPR_MI_RPN, "MI_RPN" }, 539*4882a593Smuzhiyun { SPR_MD_CTR, "MD_CTR" }, 540*4882a593Smuzhiyun { SPR_M_CASID, "M_CASID" }, 541*4882a593Smuzhiyun { SPR_MD_AP, "MD_AP" }, 542*4882a593Smuzhiyun { SPR_MD_EPN, "MD_EPN" }, 543*4882a593Smuzhiyun { SPR_M_TWB, "M_TWB" }, 544*4882a593Smuzhiyun { SPR_MD_TWC, "MD_TWC" }, 545*4882a593Smuzhiyun { SPR_MD_RPN, "MD_RPN" }, 546*4882a593Smuzhiyun { SPR_M_TW, "M_TW" }, 547*4882a593Smuzhiyun { SPR_MI_DBCAM, "MI_DBCAM" }, 548*4882a593Smuzhiyun { SPR_MI_DBRAM0, "MI_DBRAM0" }, 549*4882a593Smuzhiyun { SPR_MI_DBRAM1, "MI_DBRAM1" }, 550*4882a593Smuzhiyun { SPR_MD_DBCAM, "MD_DBCAM" }, 551*4882a593Smuzhiyun { SPR_MD_DBRAM0, "MD_DBRAM0" }, 552*4882a593Smuzhiyun { SPR_MD_DBRAM1, "MD_DBRAM1" }, 553*4882a593Smuzhiyun { SPR_ZPR, "ZPR" }, 554*4882a593Smuzhiyun { SPR_PID, "PID" }, 555*4882a593Smuzhiyun { SPR_CCR0, "CCR0" }, 556*4882a593Smuzhiyun { SPR_IAC3, "IAC3" }, 557*4882a593Smuzhiyun { SPR_IAC4, "IAC4" }, 558*4882a593Smuzhiyun { SPR_DVC1, "DVC1" }, 559*4882a593Smuzhiyun { SPR_DVC2, "DVC2" }, 560*4882a593Smuzhiyun { SPR_SGR, "SGR" }, 561*4882a593Smuzhiyun { SPR_DCWR, "DCWR" }, 562*4882a593Smuzhiyun { SPR_SLER, "SLER" }, 563*4882a593Smuzhiyun { SPR_SU0R, "SU0R" }, 564*4882a593Smuzhiyun { SPR_DBCR1, "DBCR1" }, 565*4882a593Smuzhiyun { SPR_ICDBDR, "ICDBDR" }, 566*4882a593Smuzhiyun { SPR_ESR, "ESR" }, 567*4882a593Smuzhiyun { SPR_DEAR, "DEAR" }, 568*4882a593Smuzhiyun { SPR_EVPR, "EVPR" }, 569*4882a593Smuzhiyun { SPR_TSR, "TSR" }, 570*4882a593Smuzhiyun { SPR_TCR, "TCR" }, 571*4882a593Smuzhiyun { SPR_PIT, "PIT" }, 572*4882a593Smuzhiyun { SPR_SRR2, "SRR2" }, 573*4882a593Smuzhiyun { SPR_SRR3, "SRR3" }, 574*4882a593Smuzhiyun { SPR_DBSR, "DBSR" }, 575*4882a593Smuzhiyun { SPR_DBCR0, "DBCR0" }, 576*4882a593Smuzhiyun { SPR_IAC1, "IAC1" }, 577*4882a593Smuzhiyun { SPR_IAC2, "IAC2" }, 578*4882a593Smuzhiyun { SPR_DAC1, "DAC1" }, 579*4882a593Smuzhiyun { SPR_DAC2, "DAC2" }, 580*4882a593Smuzhiyun { SPR_DCCR, "DCCR" }, 581*4882a593Smuzhiyun { SPR_ICCR, "ICCR" }, 582*4882a593Smuzhiyun }; 583*4882a593Smuzhiyun 584*4882a593Smuzhiyun const unsigned int n_sprs = sizeof(spr_map) / sizeof(spr_map[0]); 585*4882a593Smuzhiyun 586*4882a593Smuzhiyun #endif 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun /* 589*4882a593Smuzhiyun * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks 590*4882a593Smuzhiyun * All rights reserved. 591*4882a593Smuzhiyun * 592*4882a593Smuzhiyun * Redistribution and use in source and binary forms are freely 593*4882a593Smuzhiyun * permitted provided that the above copyright notice and this 594*4882a593Smuzhiyun * paragraph and the following disclaimer are duplicated in all 595*4882a593Smuzhiyun * such forms. 596*4882a593Smuzhiyun * 597*4882a593Smuzhiyun * This software is provided "AS IS" and without any express or 598*4882a593Smuzhiyun * implied warranties, including, without limitation, the implied 599*4882a593Smuzhiyun * warranties of merchantability and fitness for a particular 600*4882a593Smuzhiyun * purpose. 601*4882a593Smuzhiyun */ 602