diff options
author | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-04-05 18:09:15 +0000 |
---|---|---|
committer | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-04-05 18:09:15 +0000 |
commit | a4d17f1992cd04bb4c1c65e239e6921b66363fc3 (patch) | |
tree | 38bc57c7ff06c08462c4d190e7929d85f8f42f60 /target-sparc | |
parent | 803b3c7b4d3a74d54a3f63857ffecefd539279f9 (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.c | 22 |
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; |