xref: /OK3568_Linux_fs/u-boot/include/bedbug/tables.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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