Commit a4d17f1992cd04bb4c1c65e239e6921b66363fc3

Authored by blueswir1
1 parent 803b3c7b

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
Showing 1 changed file with 13 additions and 9 deletions
target-sparc/translate.c
... ... @@ -1012,6 +1012,11 @@ static void disas_sparc_insn(DisasContext * dc)
1012 1012 do_fbranch(dc, target, insn, cc);
1013 1013 goto jmp_insn;
1014 1014 }
  1015 +#else
  1016 + case 0x7: /* CBN+x */
  1017 + {
  1018 + goto ncp_insn;
  1019 + }
1015 1020 #endif
1016 1021 case 0x2: /* BN+x */
1017 1022 {
... ... @@ -2444,12 +2449,7 @@ static void disas_sparc_insn(DisasContext * dc)
2444 2449 case 0x30: /* ldc */
2445 2450 case 0x31: /* ldcsr */
2446 2451 case 0x33: /* lddc */
2447   - case 0x34: /* stc */
2448   - case 0x35: /* stcsr */
2449   - case 0x36: /* stdcq */
2450   - case 0x37: /* stdc */
2451 2452 goto ncp_insn;
2452   - break;
2453 2453 /* avoid warnings */
2454 2454 (void) &gen_op_stfa;
2455 2455 (void) &gen_op_stdfa;
... ... @@ -2612,8 +2612,8 @@ static void disas_sparc_insn(DisasContext * dc)
2612 2612 goto illegal_insn;
2613 2613 }
2614 2614 } else if (xop > 0x33 && xop < 0x3f) {
2615   -#ifdef TARGET_SPARC64
2616 2615 switch (xop) {
  2616 +#ifdef TARGET_SPARC64
2617 2617 case 0x34: /* V9 stfa */
2618 2618 gen_op_stfa(insn, 0, 0, 0); // XXX
2619 2619 break;
... ... @@ -2628,12 +2628,16 @@ static void disas_sparc_insn(DisasContext * dc)
2628 2628 break;
2629 2629 case 0x36: /* V9 stqfa */
2630 2630 goto nfpu_insn;
  2631 +#else
  2632 + case 0x34: /* stc */
  2633 + case 0x35: /* stcsr */
  2634 + case 0x36: /* stdcq */
  2635 + case 0x37: /* stdc */
  2636 + goto ncp_insn;
  2637 +#endif
2631 2638 default:
2632 2639 goto illegal_insn;
2633 2640 }
2634   -#else
2635   - goto illegal_insn;
2636   -#endif
2637 2641 }
2638 2642 else
2639 2643 goto illegal_insn;
... ...