target-sh4: fix fldi0/fldi1
authoraurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 20 Nov 2008 06:41:29 +0000 (06:41 +0000)
committeraurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 20 Nov 2008 06:41:29 +0000 (06:41 +0000)
fldi0/fldi1 should be executed as a nop if FPSCR.FR is set instead of
generating an exception. Reported by Laurent Desnogues.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5759 c046a42c-6fe2-441c-8c8c-71466251a162

target-sh4/translate.c

index f8371e2..84a3f40 100644 (file)
@@ -1670,15 +1670,13 @@ static void _decode_opc(DisasContext * ctx)
     case 0xf08d: /* fldi0 FRn - FPSCR: R[PR] */
        if (!(ctx->fpscr & FPSCR_PR)) {
            tcg_gen_movi_i32(cpu_fregs[FREG(B11_8)], 0);
-           return;
        }
-       break;
+       return;
     case 0xf09d: /* fldi1 FRn - FPSCR: R[PR] */
        if (!(ctx->fpscr & FPSCR_PR)) {
            tcg_gen_movi_i32(cpu_fregs[FREG(B11_8)], 0x3f800000);
-           return;
        }
-       break;
+       return;
     case 0xf0ad: /* fcnvsd FPUL,DRn */
        {
            TCGv_i64 fp = tcg_temp_new_i64();