--- qemu-0.12.4/target-mips/translate.c 2010-05-17 16:12:58.048661610 +0400 +++ qemu-0.12.4/target-mips/translate.c 2010-05-17 16:13:12.281656754 +0400 @@ -2761,7 +2761,7 @@ case OPC_DINSU: if (lsb > msb) goto fail; - mask = ((1ULL << (msb - lsb + 1)) - 1) << lsb; + mask = ((1ULL << (msb - lsb + 1)) - 1) << (lsb + 32); gen_load_gpr(t0, rt); tcg_gen_andi_tl(t0, t0, ~mask); tcg_gen_shli_tl(t1, t1, lsb + 32);