qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [4563] Fix mov[tf].ps handling for MIPS, by Richard Sandifo


From: Thiemo Seufer
Subject: [Qemu-devel] [4563] Fix mov[tf].ps handling for MIPS, by Richard Sandiford.
Date: Sat, 24 May 2008 19:46:23 +0000

Revision: 4563
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4563
Author:   ths
Date:     2008-05-24 19:46:23 +0000 (Sat, 24 May 2008)

Log Message:
-----------
Fix mov[tf].ps handling for MIPS, by Richard Sandiford.

Modified Paths:
--------------
    trunk/target-mips/op.c
    trunk/target-mips/translate.c

Modified: trunk/target-mips/op.c
===================================================================
--- trunk/target-mips/op.c      2008-05-24 19:06:07 UTC (rev 4562)
+++ trunk/target-mips/op.c      2008-05-24 19:46:23 UTC (rev 4563)
@@ -1632,10 +1632,11 @@
 }
 FLOAT_OP(movf, ps)
 {
-    if (!(env->fpu->fcr31 & PARAM1)) {
+    unsigned int mask = GET_FP_COND (env->fpu) >> PARAM1;
+    if (!(mask & 1))
         WT2 = WT0;
+    if (!(mask & 2))
         WTH2 = WTH0;
-    }
     DEBUG_FPU_STATE();
     FORCE_RET();
 }
@@ -1655,10 +1656,11 @@
 }
 FLOAT_OP(movt, ps)
 {
-    if (env->fpu->fcr31 & PARAM1) {
+    unsigned int mask = GET_FP_COND (env->fpu) >> PARAM1;
+    if (mask & 1)
         WT2 = WT0;
+    if (mask & 2)
         WTH2 = WTH0;
-    }
     DEBUG_FPU_STATE();
     FORCE_RET();
 }

Modified: trunk/target-mips/translate.c
===================================================================
--- trunk/target-mips/translate.c       2008-05-24 19:06:07 UTC (rev 4562)
+++ trunk/target-mips/translate.c       2008-05-24 19:46:23 UTC (rev 4563)
@@ -5594,7 +5594,6 @@
 }
 GEN_MOVCF(d);
 GEN_MOVCF(s);
-GEN_MOVCF(ps);
 #undef GEN_MOVCF
 
 static void gen_farith (DisasContext *ctx, uint32_t op1,
@@ -6213,7 +6212,10 @@
         GEN_LOAD_FREG_FTN(WTH0, fs);
         GEN_LOAD_FREG_FTN(WT2, fd);
         GEN_LOAD_FREG_FTN(WTH2, fd);
-        gen_movcf_ps(ctx, (ft >> 2) & 0x7, ft & 0x1);
+        if (ft & 0x1)
+            gen_op_float_movt_ps ((ft >> 2) & 0x7);
+        else
+            gen_op_float_movf_ps ((ft >> 2) & 0x7);
         GEN_STORE_FTN_FREG(fd, WT2);
         GEN_STORE_FTN_FREG(fd, WTH2);
         opn = "movcf.ps";






reply via email to

[Prev in Thread] Current Thread [Next in Thread]