Commit 12d961385b0216e4dec3a3d9fe9d6441c7832995
1 parent
66ba317c
target-sh4: fix fldi0/fldi1
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
Showing
1 changed file
with
2 additions
and
4 deletions
target-sh4/translate.c
@@ -1670,15 +1670,13 @@ static void _decode_opc(DisasContext * ctx) | @@ -1670,15 +1670,13 @@ static void _decode_opc(DisasContext * ctx) | ||
1670 | case 0xf08d: /* fldi0 FRn - FPSCR: R[PR] */ | 1670 | case 0xf08d: /* fldi0 FRn - FPSCR: R[PR] */ |
1671 | if (!(ctx->fpscr & FPSCR_PR)) { | 1671 | if (!(ctx->fpscr & FPSCR_PR)) { |
1672 | tcg_gen_movi_i32(cpu_fregs[FREG(B11_8)], 0); | 1672 | tcg_gen_movi_i32(cpu_fregs[FREG(B11_8)], 0); |
1673 | - return; | ||
1674 | } | 1673 | } |
1675 | - break; | 1674 | + return; |
1676 | case 0xf09d: /* fldi1 FRn - FPSCR: R[PR] */ | 1675 | case 0xf09d: /* fldi1 FRn - FPSCR: R[PR] */ |
1677 | if (!(ctx->fpscr & FPSCR_PR)) { | 1676 | if (!(ctx->fpscr & FPSCR_PR)) { |
1678 | tcg_gen_movi_i32(cpu_fregs[FREG(B11_8)], 0x3f800000); | 1677 | tcg_gen_movi_i32(cpu_fregs[FREG(B11_8)], 0x3f800000); |
1679 | - return; | ||
1680 | } | 1678 | } |
1681 | - break; | 1679 | + return; |
1682 | case 0xf0ad: /* fcnvsd FPUL,DRn */ | 1680 | case 0xf0ad: /* fcnvsd FPUL,DRn */ |
1683 | { | 1681 | { |
1684 | TCGv_i64 fp = tcg_temp_new_i64(); | 1682 | TCGv_i64 fp = tcg_temp_new_i64(); |