aboutsummaryrefslogtreecommitdiff
path: root/target-sparc
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-04-05 18:09:15 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-04-05 18:09:15 +0000
commita4d17f1992cd04bb4c1c65e239e6921b66363fc3 (patch)
tree38bc57c7ff06c08462c4d190e7929d85f8f42f60 /target-sparc
parent803b3c7b4d3a74d54a3f63857ffecefd539279f9 (diff)
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
Diffstat (limited to 'target-sparc')
-rw-r--r--target-sparc/translate.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 9f2d249624..53a3a674c6 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -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;