]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target-mips: fix ROTR and DROTR by zero
authorAurelien Jarno <aurelien@aurel32.net>
Tue, 23 Feb 2010 17:31:00 +0000 (18:31 +0100)
committerAurelien Jarno <aurelien@aurel32.net>
Tue, 23 Feb 2010 17:31:00 +0000 (18:31 +0100)
Backported from HEAD (cc3f20fee2c9bea3793bf873c531ae6baf68df3a)

Signed-off-by: Nathan Froyd <froydnj@codesourcery.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
target-mips/translate.c

index bf983821ac1c487bb176861fd87f3edaf0d00941..f811f50c7ff78962bbc0d91e2e64e7750f69a33d 100644 (file)
@@ -1451,6 +1451,8 @@ static void gen_shift_imm(CPUState *env, DisasContext *ctx, uint32_t opc,
                     tcg_gen_rotri_i32(t1, t1, uimm);
                     tcg_gen_ext_i32_tl(cpu_gpr[rt], t1);
                     tcg_temp_free_i32(t1);
+                } else {
+                    tcg_gen_ext32s_tl(cpu_gpr[rt], t0);
                 }
                 opn = "rotr";
             } else {
@@ -1489,6 +1491,8 @@ static void gen_shift_imm(CPUState *env, DisasContext *ctx, uint32_t opc,
             if (env->insn_flags & ISA_MIPS32R2) {
                 if (uimm != 0) {
                     tcg_gen_rotri_tl(cpu_gpr[rt], t0, uimm);
+                } else {
+                    tcg_gen_mov_tl(cpu_gpr[rt], t0);
                 }
                 opn = "drotr";
             } else {