Fix co-processor branch and store ops (Aurelien Jarno)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2603 c046a42c-6fe2-441c-8c8c-71466251a162
master
blueswir1 2007-04-05 18:09:15 +00:00
parent 803b3c7b4d
commit a4d17f1992
1 changed files with 13 additions and 9 deletions

View File

@ -1012,6 +1012,11 @@ static void disas_sparc_insn(DisasContext * dc)
do_fbranch(dc, target, insn, cc);
goto jmp_insn;
}
#else
case 0x7: /* CBN+x */
{
goto ncp_insn;
}
#endif
case 0x2: /* BN+x */
{
@ -2444,12 +2449,7 @@ static void disas_sparc_insn(DisasContext * dc)
case 0x30: /* ldc */
case 0x31: /* ldcsr */
case 0x33: /* lddc */
case 0x34: /* stc */
case 0x35: /* stcsr */
case 0x36: /* stdcq */
case 0x37: /* stdc */
goto ncp_insn;
break;
/* avoid warnings */
(void) &gen_op_stfa;
(void) &gen_op_stdfa;
@ -2612,8 +2612,8 @@ static void disas_sparc_insn(DisasContext * dc)
goto illegal_insn;
}
} else if (xop > 0x33 && xop < 0x3f) {
#ifdef TARGET_SPARC64
switch (xop) {
#ifdef TARGET_SPARC64
case 0x34: /* V9 stfa */
gen_op_stfa(insn, 0, 0, 0); // XXX
break;
@ -2628,12 +2628,16 @@ static void disas_sparc_insn(DisasContext * dc)
break;
case 0x36: /* V9 stqfa */
goto nfpu_insn;
#else
case 0x34: /* stc */
case 0x35: /* stcsr */
case 0x36: /* stdcq */
case 0x37: /* stdc */
goto ncp_insn;
#endif
default:
goto illegal_insn;
}
#else
goto illegal_insn;
#endif
}
else
goto illegal_insn;