OSDN Git Service

Fix Sparc64 movr
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 4 Jul 2007 20:22:35 +0000 (20:22 +0000)
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 4 Jul 2007 20:22:35 +0000 (20:22 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3045 c046a42c-6fe2-441c-8c8c-71466251a162

target-sparc/translate.c

index 110b804..c69ffd9 100644 (file)
@@ -84,7 +84,7 @@ enum {
     GET_FIELD(X, 31 - (TO), 31 - (FROM))
 
 #define GET_FIELDs(x,a,b) sign_extend (GET_FIELD(x,a,b), (b) - (a) + 1)
-#define GET_FIELD_SPs(x,a,b) sign_extend (GET_FIELD_SP(x,a,b), 32 - ((b) - (a) + 1))
+#define GET_FIELD_SPs(x,a,b) sign_extend (GET_FIELD_SP(x,a,b), ((b) - (a) + 1))
 
 #ifdef TARGET_SPARC64
 #define DFPREG(r) (((r & 1) << 6) | (r & 0x1e))
@@ -2226,7 +2226,7 @@ static void disas_sparc_insn(DisasContext * dc)
                            gen_movl_reg_T0(rs1);
                            gen_cond_reg(cond);
                            if (IS_IMM) {       /* immediate */
-                               rs2 = GET_FIELD_SPs(insn, 0, 10);
+                               rs2 = GET_FIELD_SPs(insn, 0, 9);
                                gen_movl_simm_T1(rs2);
                            }
                            else {