* rx-decode.opc (rx_decode_opcode): Bit operations on

registers are 32-bit operations, not 8-bit operations.
* rx-decode.c: Regenerate.
This commit is contained in:
DJ Delorie 2013-06-14 19:57:10 +00:00
parent 2532064ada
commit 3531d54957
3 changed files with 103 additions and 81 deletions

View File

@ -1,3 +1,9 @@
2013-06-14 DJ Delorie <dj@redhat.com>
* rx-decode.opc (rx_decode_opcode): Bit operations on
registers are 32-bit operations, not 8-bit operations.
* rx-decode.c: Regenerate.
2013-06-13 Chao-ying Fu <Chao-ying.Fu@imgtec.com> 2013-06-13 Chao-ying Fu <Chao-ying.Fu@imgtec.com>
* micromips-opc.c (IVIRT): New define. * micromips-opc.c (IVIRT): New define.

View File

@ -291,7 +291,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]); op[0]);
} }
SYNTAX("brk"); SYNTAX("brk");
#line 976 "rx-decode.opc" #line 984 "rx-decode.opc"
ID(brk); ID(brk);
} }
@ -306,7 +306,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]); op[0]);
} }
SYNTAX("dbt"); SYNTAX("dbt");
#line 979 "rx-decode.opc" #line 987 "rx-decode.opc"
ID(dbt); ID(dbt);
} }
@ -4834,7 +4834,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0], op[1]); op[0], op[1]);
} }
SYNTAX("int #%1"); SYNTAX("int #%1");
#line 982 "rx-decode.opc" #line 990 "rx-decode.opc"
ID(int); SC(IMM(1)); ID(int); SC(IMM(1));
} }
@ -4846,7 +4846,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00: case 0x00:
{ {
/** 0111 0101 0111 0000 0000 immm mvtipl #%1 */ /** 0111 0101 0111 0000 0000 immm mvtipl #%1 */
#line 949 "rx-decode.opc" #line 957 "rx-decode.opc"
int immm AU = op[2] & 0x0f; int immm AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -4856,7 +4856,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" immm = 0x%x\n", immm); printf (" immm = 0x%x\n", immm);
} }
SYNTAX("mvtipl #%1"); SYNTAX("mvtipl #%1");
#line 949 "rx-decode.opc" #line 957 "rx-decode.opc"
ID(mvtipl); SC(immm); ID(mvtipl); SC(immm);
} }
@ -4913,11 +4913,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_35: op_semantics_35:
{ {
/** 0111 100b ittt rdst bset #%1, %0 */ /** 0111 100b ittt rdst bset #%1, %0 */
#line 900 "rx-decode.opc" #line 902 "rx-decode.opc"
int b AU = op[0] & 0x01; int b AU = op[0] & 0x01;
#line 900 "rx-decode.opc" #line 902 "rx-decode.opc"
int ittt AU = (op[1] >> 4) & 0x0f; int ittt AU = (op[1] >> 4) & 0x0f;
#line 900 "rx-decode.opc" #line 902 "rx-decode.opc"
int rdst AU = op[1] & 0x0f; int rdst AU = op[1] & 0x0f;
if (trace) if (trace)
{ {
@ -4929,7 +4929,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("bset #%1, %0"); SYNTAX("bset #%1, %0");
#line 900 "rx-decode.opc" #line 902 "rx-decode.opc"
ID(bset); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____; ID(bset); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;
@ -4954,11 +4954,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_36: op_semantics_36:
{ {
/** 0111 101b ittt rdst bclr #%1, %0 */ /** 0111 101b ittt rdst bclr #%1, %0 */
#line 910 "rx-decode.opc" #line 914 "rx-decode.opc"
int b AU = op[0] & 0x01; int b AU = op[0] & 0x01;
#line 910 "rx-decode.opc" #line 914 "rx-decode.opc"
int ittt AU = (op[1] >> 4) & 0x0f; int ittt AU = (op[1] >> 4) & 0x0f;
#line 910 "rx-decode.opc" #line 914 "rx-decode.opc"
int rdst AU = op[1] & 0x0f; int rdst AU = op[1] & 0x0f;
if (trace) if (trace)
{ {
@ -4970,7 +4970,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("bclr #%1, %0"); SYNTAX("bclr #%1, %0");
#line 910 "rx-decode.opc" #line 914 "rx-decode.opc"
ID(bclr); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____; ID(bclr); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;
@ -4995,11 +4995,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_37: op_semantics_37:
{ {
/** 0111 110b ittt rdst btst #%2, %1 */ /** 0111 110b ittt rdst btst #%2, %1 */
#line 920 "rx-decode.opc" #line 926 "rx-decode.opc"
int b AU = op[0] & 0x01; int b AU = op[0] & 0x01;
#line 920 "rx-decode.opc" #line 926 "rx-decode.opc"
int ittt AU = (op[1] >> 4) & 0x0f; int ittt AU = (op[1] >> 4) & 0x0f;
#line 920 "rx-decode.opc" #line 926 "rx-decode.opc"
int rdst AU = op[1] & 0x0f; int rdst AU = op[1] & 0x0f;
if (trace) if (trace)
{ {
@ -5011,7 +5011,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("btst #%2, %1"); SYNTAX("btst #%2, %1");
#line 920 "rx-decode.opc" #line 926 "rx-decode.opc"
ID(btst); BWL(LSIZE); S2C(b*16+ittt); SR(rdst); F___ZC; ID(btst); BWL(LSIZE); S2C(b*16+ittt); SR(rdst); F___ZC;
@ -5185,7 +5185,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0xd0: case 0xd0:
{ {
/** 0111 1110 110 crsrc pushc %1 */ /** 0111 1110 110 crsrc pushc %1 */
#line 955 "rx-decode.opc" #line 963 "rx-decode.opc"
int crsrc AU = op[1] & 0x1f; int crsrc AU = op[1] & 0x1f;
if (trace) if (trace)
{ {
@ -5195,7 +5195,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" crsrc = 0x%x\n", crsrc); printf (" crsrc = 0x%x\n", crsrc);
} }
SYNTAX("pushc %1"); SYNTAX("pushc %1");
#line 955 "rx-decode.opc" #line 963 "rx-decode.opc"
ID(mov); OP(0, RX_Operand_Predec, 0, 0); SR(crsrc + 16); ID(mov); OP(0, RX_Operand_Predec, 0, 0); SR(crsrc + 16);
} }
@ -5204,7 +5204,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0xf0: case 0xf0:
{ {
/** 0111 1110 111 crdst popc %0 */ /** 0111 1110 111 crdst popc %0 */
#line 952 "rx-decode.opc" #line 960 "rx-decode.opc"
int crdst AU = op[1] & 0x1f; int crdst AU = op[1] & 0x1f;
if (trace) if (trace)
{ {
@ -5214,7 +5214,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" crdst = 0x%x\n", crdst); printf (" crdst = 0x%x\n", crdst);
} }
SYNTAX("popc %0"); SYNTAX("popc %0");
#line 952 "rx-decode.opc" #line 960 "rx-decode.opc"
ID(mov); OP(1, RX_Operand_Postinc, 0, 0); DR(crdst + 16); ID(mov); OP(1, RX_Operand_Postinc, 0, 0); DR(crdst + 16);
} }
@ -5533,7 +5533,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0], op[1]); op[0], op[1]);
} }
SYNTAX("rtfi"); SYNTAX("rtfi");
#line 970 "rx-decode.opc" #line 978 "rx-decode.opc"
ID(rtfi); ID(rtfi);
} }
@ -5548,7 +5548,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0], op[1]); op[0], op[1]);
} }
SYNTAX("rte"); SYNTAX("rte");
#line 973 "rx-decode.opc" #line 981 "rx-decode.opc"
ID(rte); ID(rte);
} }
@ -5563,7 +5563,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0], op[1]); op[0], op[1]);
} }
SYNTAX("wait"); SYNTAX("wait");
#line 985 "rx-decode.opc" #line 993 "rx-decode.opc"
ID(wait); ID(wait);
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
@ -5589,7 +5589,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0xaf: case 0xaf:
{ {
/** 0111 1111 1010 rdst setpsw %0 */ /** 0111 1111 1010 rdst setpsw %0 */
#line 946 "rx-decode.opc" #line 954 "rx-decode.opc"
int rdst AU = op[1] & 0x0f; int rdst AU = op[1] & 0x0f;
if (trace) if (trace)
{ {
@ -5599,7 +5599,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("setpsw %0"); SYNTAX("setpsw %0");
#line 946 "rx-decode.opc" #line 954 "rx-decode.opc"
ID(setpsw); DF(rdst); ID(setpsw); DF(rdst);
} }
@ -5622,7 +5622,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0xbf: case 0xbf:
{ {
/** 0111 1111 1011 rdst clrpsw %0 */ /** 0111 1111 1011 rdst clrpsw %0 */
#line 943 "rx-decode.opc" #line 951 "rx-decode.opc"
int rdst AU = op[1] & 0x0f; int rdst AU = op[1] & 0x0f;
if (trace) if (trace)
{ {
@ -5632,7 +5632,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("clrpsw %0"); SYNTAX("clrpsw %0");
#line 943 "rx-decode.opc" #line 951 "rx-decode.opc"
ID(clrpsw); DF(rdst); ID(clrpsw); DF(rdst);
} }
@ -6818,11 +6818,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_43: op_semantics_43:
{ {
/** 1111 00sd rdst 1bit bclr #%1, %0%S0 */ /** 1111 00sd rdst 1bit bclr #%1, %0%S0 */
#line 904 "rx-decode.opc" #line 906 "rx-decode.opc"
int sd AU = op[0] & 0x03; int sd AU = op[0] & 0x03;
#line 904 "rx-decode.opc" #line 906 "rx-decode.opc"
int rdst AU = (op[1] >> 4) & 0x0f; int rdst AU = (op[1] >> 4) & 0x0f;
#line 904 "rx-decode.opc" #line 906 "rx-decode.opc"
int bit AU = op[1] & 0x07; int bit AU = op[1] & 0x07;
if (trace) if (trace)
{ {
@ -6834,7 +6834,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" bit = 0x%x\n", bit); printf (" bit = 0x%x\n", bit);
} }
SYNTAX("bclr #%1, %0%S0"); SYNTAX("bclr #%1, %0%S0");
#line 904 "rx-decode.opc" #line 906 "rx-decode.opc"
ID(bclr); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE); F_____; ID(bclr); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE); F_____;
} }
@ -6886,11 +6886,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_44: op_semantics_44:
{ {
/** 1111 01sd rdst 0bit btst #%2, %1%S1 */ /** 1111 01sd rdst 0bit btst #%2, %1%S1 */
#line 914 "rx-decode.opc" #line 918 "rx-decode.opc"
int sd AU = op[0] & 0x03; int sd AU = op[0] & 0x03;
#line 914 "rx-decode.opc" #line 918 "rx-decode.opc"
int rdst AU = (op[1] >> 4) & 0x0f; int rdst AU = (op[1] >> 4) & 0x0f;
#line 914 "rx-decode.opc" #line 918 "rx-decode.opc"
int bit AU = op[1] & 0x07; int bit AU = op[1] & 0x07;
if (trace) if (trace)
{ {
@ -6902,7 +6902,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" bit = 0x%x\n", bit); printf (" bit = 0x%x\n", bit);
} }
SYNTAX("btst #%2, %1%S1"); SYNTAX("btst #%2, %1%S1");
#line 914 "rx-decode.opc" #line 918 "rx-decode.opc"
ID(btst); BWL(BSIZE); S2C(bit); SD(sd, rdst, BSIZE); F___ZC; ID(btst); BWL(BSIZE); S2C(bit); SD(sd, rdst, BSIZE); F___ZC;
} }
@ -7817,6 +7817,8 @@ rx_decode_opcode (unsigned long pc AU,
SYNTAX("bset %1, %0%S0"); SYNTAX("bset %1, %0%S0");
#line 897 "rx-decode.opc" #line 897 "rx-decode.opc"
ID(bset); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____; ID(bset); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____;
if (sd == 3) /* bset reg,reg */
BWL(LSIZE);
} }
break; break;
@ -7857,11 +7859,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_58: op_semantics_58:
{ {
/** 1111 1100 0110 01sd rdst rsrc bclr %1, %0%S0 */ /** 1111 1100 0110 01sd rdst rsrc bclr %1, %0%S0 */
#line 907 "rx-decode.opc" #line 909 "rx-decode.opc"
int sd AU = op[1] & 0x03; int sd AU = op[1] & 0x03;
#line 907 "rx-decode.opc" #line 909 "rx-decode.opc"
int rdst AU = (op[2] >> 4) & 0x0f; int rdst AU = (op[2] >> 4) & 0x0f;
#line 907 "rx-decode.opc" #line 909 "rx-decode.opc"
int rsrc AU = op[2] & 0x0f; int rsrc AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -7873,8 +7875,10 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rsrc = 0x%x\n", rsrc); printf (" rsrc = 0x%x\n", rsrc);
} }
SYNTAX("bclr %1, %0%S0"); SYNTAX("bclr %1, %0%S0");
#line 907 "rx-decode.opc" #line 909 "rx-decode.opc"
ID(bclr); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____; ID(bclr); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____;
if (sd == 3) /* bset reg,reg */
BWL(LSIZE);
} }
break; break;
@ -7915,11 +7919,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_59: op_semantics_59:
{ {
/** 1111 1100 0110 10sd rdst rsrc btst %2, %1%S1 */ /** 1111 1100 0110 10sd rdst rsrc btst %2, %1%S1 */
#line 917 "rx-decode.opc" #line 921 "rx-decode.opc"
int sd AU = op[1] & 0x03; int sd AU = op[1] & 0x03;
#line 917 "rx-decode.opc" #line 921 "rx-decode.opc"
int rdst AU = (op[2] >> 4) & 0x0f; int rdst AU = (op[2] >> 4) & 0x0f;
#line 917 "rx-decode.opc" #line 921 "rx-decode.opc"
int rsrc AU = op[2] & 0x0f; int rsrc AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -7931,8 +7935,10 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rsrc = 0x%x\n", rsrc); printf (" rsrc = 0x%x\n", rsrc);
} }
SYNTAX("btst %2, %1%S1"); SYNTAX("btst %2, %1%S1");
#line 917 "rx-decode.opc" #line 921 "rx-decode.opc"
ID(btst); BWL(BSIZE); S2R(rsrc); SD(sd, rdst, BSIZE); F___ZC; ID(btst); BWL(BSIZE); S2R(rsrc); SD(sd, rdst, BSIZE); F___ZC;
if (sd == 3) /* bset reg,reg */
BWL(LSIZE);
} }
break; break;
@ -7973,11 +7979,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_60: op_semantics_60:
{ {
/** 1111 1100 0110 11sd rdst rsrc bnot %1, %0%S0 */ /** 1111 1100 0110 11sd rdst rsrc bnot %1, %0%S0 */
#line 927 "rx-decode.opc" #line 933 "rx-decode.opc"
int sd AU = op[1] & 0x03; int sd AU = op[1] & 0x03;
#line 927 "rx-decode.opc" #line 933 "rx-decode.opc"
int rdst AU = (op[2] >> 4) & 0x0f; int rdst AU = (op[2] >> 4) & 0x0f;
#line 927 "rx-decode.opc" #line 933 "rx-decode.opc"
int rsrc AU = op[2] & 0x0f; int rsrc AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -7989,8 +7995,10 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rsrc = 0x%x\n", rsrc); printf (" rsrc = 0x%x\n", rsrc);
} }
SYNTAX("bnot %1, %0%S0"); SYNTAX("bnot %1, %0%S0");
#line 927 "rx-decode.opc" #line 933 "rx-decode.opc"
ID(bnot); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); ID(bnot); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE);
if (sd == 3) /* bset reg,reg */
BWL(LSIZE);
} }
break; break;
@ -8437,13 +8445,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_68: op_semantics_68:
{ {
/** 1111 1100 1101 sz sd rdst cond sc%1%s %0 */ /** 1111 1100 1101 sz sd rdst cond sc%1%s %0 */
#line 991 "rx-decode.opc" #line 999 "rx-decode.opc"
int sz AU = (op[1] >> 2) & 0x03; int sz AU = (op[1] >> 2) & 0x03;
#line 991 "rx-decode.opc" #line 999 "rx-decode.opc"
int sd AU = op[1] & 0x03; int sd AU = op[1] & 0x03;
#line 991 "rx-decode.opc" #line 999 "rx-decode.opc"
int rdst AU = (op[2] >> 4) & 0x0f; int rdst AU = (op[2] >> 4) & 0x0f;
#line 991 "rx-decode.opc" #line 999 "rx-decode.opc"
int cond AU = op[2] & 0x0f; int cond AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -8456,7 +8464,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" cond = 0x%x\n", cond); printf (" cond = 0x%x\n", cond);
} }
SYNTAX("sc%1%s %0"); SYNTAX("sc%1%s %0");
#line 991 "rx-decode.opc" #line 999 "rx-decode.opc"
ID(sccnd); BWL(sz); DD (sd, rdst, sz); Scc(cond); ID(sccnd); BWL(sz); DD (sd, rdst, sz); Scc(cond);
} }
@ -8584,13 +8592,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_69: op_semantics_69:
{ {
/** 1111 1100 111bit sd rdst cond bm%2 #%1, %0%S0 */ /** 1111 1100 111bit sd rdst cond bm%2 #%1, %0%S0 */
#line 934 "rx-decode.opc" #line 942 "rx-decode.opc"
int bit AU = (op[1] >> 2) & 0x07; int bit AU = (op[1] >> 2) & 0x07;
#line 934 "rx-decode.opc" #line 942 "rx-decode.opc"
int sd AU = op[1] & 0x03; int sd AU = op[1] & 0x03;
#line 934 "rx-decode.opc" #line 942 "rx-decode.opc"
int rdst AU = (op[2] >> 4) & 0x0f; int rdst AU = (op[2] >> 4) & 0x0f;
#line 934 "rx-decode.opc" #line 942 "rx-decode.opc"
int cond AU = op[2] & 0x0f; int cond AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -8603,7 +8611,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" cond = 0x%x\n", cond); printf (" cond = 0x%x\n", cond);
} }
SYNTAX("bm%2 #%1, %0%S0"); SYNTAX("bm%2 #%1, %0%S0");
#line 934 "rx-decode.opc" #line 942 "rx-decode.opc"
ID(bmcc); BWL(BSIZE); S2cc(cond); SC(bit); DD(sd, rdst, BSIZE); ID(bmcc); BWL(BSIZE); S2cc(cond); SC(bit); DD(sd, rdst, BSIZE);
} }
@ -8612,11 +8620,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_70: op_semantics_70:
{ {
/** 1111 1100 111bit sd rdst 1111 bnot #%1, %0%S0 */ /** 1111 1100 111bit sd rdst 1111 bnot #%1, %0%S0 */
#line 924 "rx-decode.opc" #line 930 "rx-decode.opc"
int bit AU = (op[1] >> 2) & 0x07; int bit AU = (op[1] >> 2) & 0x07;
#line 924 "rx-decode.opc" #line 930 "rx-decode.opc"
int sd AU = op[1] & 0x03; int sd AU = op[1] & 0x03;
#line 924 "rx-decode.opc" #line 930 "rx-decode.opc"
int rdst AU = (op[2] >> 4) & 0x0f; int rdst AU = (op[2] >> 4) & 0x0f;
if (trace) if (trace)
{ {
@ -8628,7 +8636,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("bnot #%1, %0%S0"); SYNTAX("bnot #%1, %0%S0");
#line 924 "rx-decode.opc" #line 930 "rx-decode.opc"
ID(bnot); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE); ID(bnot); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE);
} }
@ -10131,11 +10139,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_74: op_semantics_74:
{ {
/** 1111 1101 0110 100c rsrc rdst mvtc %1, %0 */ /** 1111 1101 0110 100c rsrc rdst mvtc %1, %0 */
#line 961 "rx-decode.opc" #line 969 "rx-decode.opc"
int c AU = op[1] & 0x01; int c AU = op[1] & 0x01;
#line 961 "rx-decode.opc" #line 969 "rx-decode.opc"
int rsrc AU = (op[2] >> 4) & 0x0f; int rsrc AU = (op[2] >> 4) & 0x0f;
#line 961 "rx-decode.opc" #line 969 "rx-decode.opc"
int rdst AU = op[2] & 0x0f; int rdst AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -10147,7 +10155,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("mvtc %1, %0"); SYNTAX("mvtc %1, %0");
#line 961 "rx-decode.opc" #line 969 "rx-decode.opc"
ID(mov); SR(rsrc); DR(c*16+rdst + 16); ID(mov); SR(rsrc); DR(c*16+rdst + 16);
} }
@ -10171,11 +10179,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_75: op_semantics_75:
{ {
/** 1111 1101 0110 101s rsrc rdst mvfc %1, %0 */ /** 1111 1101 0110 101s rsrc rdst mvfc %1, %0 */
#line 964 "rx-decode.opc" #line 972 "rx-decode.opc"
int s AU = op[1] & 0x01; int s AU = op[1] & 0x01;
#line 964 "rx-decode.opc" #line 972 "rx-decode.opc"
int rsrc AU = (op[2] >> 4) & 0x0f; int rsrc AU = (op[2] >> 4) & 0x0f;
#line 964 "rx-decode.opc" #line 972 "rx-decode.opc"
int rdst AU = op[2] & 0x0f; int rdst AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -10187,7 +10195,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("mvfc %1, %0"); SYNTAX("mvfc %1, %0");
#line 964 "rx-decode.opc" #line 972 "rx-decode.opc"
ID(mov); SR((s*16+rsrc) + 16); DR(rdst); ID(mov); SR((s*16+rsrc) + 16); DR(rdst);
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
@ -10643,9 +10651,9 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_89: op_semantics_89:
{ {
/** 1111 1101 0111 im11 000crdst mvtc #%1, %0 */ /** 1111 1101 0111 im11 000crdst mvtc #%1, %0 */
#line 958 "rx-decode.opc" #line 966 "rx-decode.opc"
int im AU = (op[1] >> 2) & 0x03; int im AU = (op[1] >> 2) & 0x03;
#line 958 "rx-decode.opc" #line 966 "rx-decode.opc"
int crdst AU = op[2] & 0x1f; int crdst AU = op[2] & 0x1f;
if (trace) if (trace)
{ {
@ -10656,7 +10664,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" crdst = 0x%x\n", crdst); printf (" crdst = 0x%x\n", crdst);
} }
SYNTAX("mvtc #%1, %0"); SYNTAX("mvtc #%1, %0");
#line 958 "rx-decode.opc" #line 966 "rx-decode.opc"
ID(mov); SC(IMMex(im)); DR(crdst + 16); ID(mov); SC(IMMex(im)); DR(crdst + 16);
} }
@ -11771,11 +11779,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_93: op_semantics_93:
{ {
/** 1111 1101 111 bittt cond rdst bm%2 #%1, %0%S0 */ /** 1111 1101 111 bittt cond rdst bm%2 #%1, %0%S0 */
#line 937 "rx-decode.opc" #line 945 "rx-decode.opc"
int bittt AU = op[1] & 0x1f; int bittt AU = op[1] & 0x1f;
#line 937 "rx-decode.opc" #line 945 "rx-decode.opc"
int cond AU = (op[2] >> 4) & 0x0f; int cond AU = (op[2] >> 4) & 0x0f;
#line 937 "rx-decode.opc" #line 945 "rx-decode.opc"
int rdst AU = op[2] & 0x0f; int rdst AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -11787,7 +11795,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("bm%2 #%1, %0%S0"); SYNTAX("bm%2 #%1, %0%S0");
#line 937 "rx-decode.opc" #line 945 "rx-decode.opc"
ID(bmcc); BWL(LSIZE); S2cc(cond); SC(bittt); DR(rdst); ID(bmcc); BWL(LSIZE); S2cc(cond); SC(bittt); DR(rdst);
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
@ -11799,9 +11807,9 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_94: op_semantics_94:
{ {
/** 1111 1101 111bittt 1111 rdst bnot #%1, %0 */ /** 1111 1101 111bittt 1111 rdst bnot #%1, %0 */
#line 930 "rx-decode.opc" #line 938 "rx-decode.opc"
int bittt AU = op[1] & 0x1f; int bittt AU = op[1] & 0x1f;
#line 930 "rx-decode.opc" #line 938 "rx-decode.opc"
int rdst AU = op[2] & 0x0f; int rdst AU = op[2] & 0x0f;
if (trace) if (trace)
{ {
@ -11812,7 +11820,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst); printf (" rdst = 0x%x\n", rdst);
} }
SYNTAX("bnot #%1, %0"); SYNTAX("bnot #%1, %0");
#line 930 "rx-decode.opc" #line 938 "rx-decode.opc"
ID(bnot); BWL(LSIZE); SC(bittt); DR(rdst); ID(bnot); BWL(LSIZE); SC(bittt); DR(rdst);
@ -14861,7 +14869,7 @@ rx_decode_opcode (unsigned long pc AU,
break; break;
default: UNSUPPORTED(); break; default: UNSUPPORTED(); break;
} }
#line 994 "rx-decode.opc" #line 1002 "rx-decode.opc"
return rx->n_bytes; return rx->n_bytes;
} }

View File

@ -895,6 +895,8 @@ rx_decode_opcode (unsigned long pc AU,
/** 1111 1100 0110 00sd rdst rsrc bset %1, %0%S0 */ /** 1111 1100 0110 00sd rdst rsrc bset %1, %0%S0 */
ID(bset); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____; ID(bset); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____;
if (sd == 3) /* bset reg,reg */
BWL(LSIZE);
/** 0111 100b ittt rdst bset #%1, %0 */ /** 0111 100b ittt rdst bset #%1, %0 */
ID(bset); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____; ID(bset); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;
@ -905,6 +907,8 @@ rx_decode_opcode (unsigned long pc AU,
/** 1111 1100 0110 01sd rdst rsrc bclr %1, %0%S0 */ /** 1111 1100 0110 01sd rdst rsrc bclr %1, %0%S0 */
ID(bclr); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____; ID(bclr); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____;
if (sd == 3) /* bset reg,reg */
BWL(LSIZE);
/** 0111 101b ittt rdst bclr #%1, %0 */ /** 0111 101b ittt rdst bclr #%1, %0 */
ID(bclr); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____; ID(bclr); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;
@ -915,6 +919,8 @@ rx_decode_opcode (unsigned long pc AU,
/** 1111 1100 0110 10sd rdst rsrc btst %2, %1%S1 */ /** 1111 1100 0110 10sd rdst rsrc btst %2, %1%S1 */
ID(btst); BWL(BSIZE); S2R(rsrc); SD(sd, rdst, BSIZE); F___ZC; ID(btst); BWL(BSIZE); S2R(rsrc); SD(sd, rdst, BSIZE); F___ZC;
if (sd == 3) /* bset reg,reg */
BWL(LSIZE);
/** 0111 110b ittt rdst btst #%2, %1 */ /** 0111 110b ittt rdst btst #%2, %1 */
ID(btst); BWL(LSIZE); S2C(b*16+ittt); SR(rdst); F___ZC; ID(btst); BWL(LSIZE); S2C(b*16+ittt); SR(rdst); F___ZC;
@ -925,6 +931,8 @@ rx_decode_opcode (unsigned long pc AU,
/** 1111 1100 0110 11sd rdst rsrc bnot %1, %0%S0 */ /** 1111 1100 0110 11sd rdst rsrc bnot %1, %0%S0 */
ID(bnot); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); ID(bnot); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE);
if (sd == 3) /* bset reg,reg */
BWL(LSIZE);
/** 1111 1101 111bittt 1111 rdst bnot #%1, %0 */ /** 1111 1101 111bittt 1111 rdst bnot #%1, %0 */
ID(bnot); BWL(LSIZE); SC(bittt); DR(rdst); ID(bnot); BWL(LSIZE); SC(bittt); DR(rdst);