]> git.proxmox.com Git - qemu.git/commitdiff
Sparc: fix PC/NPC during FPU traps
authorBlue Swirl <blauwirbel@gmail.com>
Sat, 17 Apr 2010 16:25:04 +0000 (16:25 +0000)
committerBlue Swirl <blauwirbel@gmail.com>
Sat, 17 Apr 2010 16:25:04 +0000 (16:25 +0000)
All FPU instructions can trap, so save PC/NPC state before
executing them.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
target-sparc/translate.c

index 2c07385d5040822570cca28c06224d9f1cfa368c..addb1e132e3822ab39abedf9a0ce44f60c7362de 100644 (file)
@@ -2155,6 +2155,7 @@ static void disas_sparc_insn(DisasContext * dc)
                 rs1 = GET_FIELD(insn, 13, 17);
                 rs2 = GET_FIELD(insn, 27, 31);
                 xop = GET_FIELD(insn, 18, 26);
+                save_state(dc, cpu_cond);
                 switch (xop) {
                 case 0x1: /* fmovs */
                     tcg_gen_mov_i32(cpu_fpr[rd], cpu_fpr[rs2]);
@@ -2468,6 +2469,7 @@ static void disas_sparc_insn(DisasContext * dc)
                 rs1 = GET_FIELD(insn, 13, 17);
                 rs2 = GET_FIELD(insn, 27, 31);
                 xop = GET_FIELD(insn, 18, 26);
+                save_state(dc, cpu_cond);
 #ifdef TARGET_SPARC64
                 if ((xop & 0x11f) == 0x005) { // V9 fmovsr
                     int l1;