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