Next attempt to get the lui sign extension right.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 25 Apr 2007 16:41:11 +0000 (16:41 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 25 Apr 2007 16:41:11 +0000 (16:41 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2727 c046a42c-6fe2-441c-8c8c-71466251a162

target-mips/op_template.c
target-mips/translate.c

index 8d4c4e4..04677cd 100644 (file)
@@ -54,7 +54,7 @@ void glue(op_load_gpr_T2_gpr, REG) (void)
 #define SET_RESET(treg, tregname)        \
     void glue(op_set, tregname)(void)    \
     {                                    \
-        treg = PARAM1;                   \
+        treg = (int32_t)PARAM1;          \
         RETURN();                        \
     }                                    \
     void glue(op_reset, tregname)(void)  \
index 96a0f37..06581f2 100644 (file)
@@ -907,8 +907,7 @@ static void gen_arith_imm (DisasContext *ctx, uint32_t opc, int rt,
         GEN_LOAD_IMM_TN(T1, uimm);
         break;
     case OPC_LUI:
-        uimm =  (int32_t)(imm << 16);
-        GEN_LOAD_IMM_TN(T0, uimm);
+        GEN_LOAD_IMM_TN(T0, uimm << 16);
         break;
     case OPC_SLL:
     case OPC_SRA: