From: Tsuneo Saito Date: Thu, 14 Jul 2011 09:41:37 +0000 (+0900) Subject: SPARC64: fp_disabled checks on ldfa/lddfa/ldqfa X-Git-Tag: v0.15.0-rc0~81 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;ds=sidebyside;h=8872eb4f567b9ae36dbd9c320f6a86c53a776d43;p=qemu.git SPARC64: fp_disabled checks on ldfa/lddfa/ldqfa ldfa/lddfa/ldqfa instructions should raise fp_disabled exceptions if %pstate.PEF==0 or %fprs.FEF==0. Signed-off-by: Tsuneo Saito Signed-off-by: Blue Swirl --- diff --git a/target-sparc/translate.c b/target-sparc/translate.c index f32a674f3..1e7e68d39 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -4484,10 +4484,16 @@ static void disas_sparc_insn(DisasContext * dc) case 0x2d: /* V9 prefetch, no effect */ goto skip_move; case 0x30: /* V9 ldfa */ + if (gen_trap_ifnofpu(dc, cpu_cond)) { + goto jmp_insn; + } save_state(dc, cpu_cond); gen_ldf_asi(cpu_addr, insn, 4, rd); goto skip_move; case 0x33: /* V9 lddfa */ + if (gen_trap_ifnofpu(dc, cpu_cond)) { + goto jmp_insn; + } save_state(dc, cpu_cond); gen_ldf_asi(cpu_addr, insn, 8, DFPREG(rd)); goto skip_move; @@ -4495,6 +4501,9 @@ static void disas_sparc_insn(DisasContext * dc) goto skip_move; case 0x32: /* V9 ldqfa */ CHECK_FPU_FEATURE(dc, FLOAT128); + if (gen_trap_ifnofpu(dc, cpu_cond)) { + goto jmp_insn; + } save_state(dc, cpu_cond); gen_ldf_asi(cpu_addr, insn, 16, QFPREG(rd)); goto skip_move;