xref: /rk3399_rockchip-uboot/include/bedbug/tables.h (revision 6c9c32f9b99ad417d61650519db5530e68bb2e93)
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*6c9c32f9Swdenk 
603