From 9143e59842952d89533937dba9043b7b36b76a82 Mon Sep 17 00:00:00 2001 From: blueswir1 Date: Thu, 5 Apr 2007 18:12:08 +0000 Subject: Fix stdfq op (Aurelien Jarno) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2604 c046a42c-6fe2-441c-8c8c-71466251a162 --- target-sparc/translate.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'target-sparc/translate.c') diff --git a/target-sparc/translate.c b/target-sparc/translate.c index 53a3a674c6..cb11b928f6 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -2602,8 +2602,14 @@ static void disas_sparc_insn(DisasContext * dc) gen_op_stfsr(); gen_op_ldst(stf); break; +#if !defined(CONFIG_USER_ONLY) case 0x26: /* stdfq */ - goto nfpu_insn; + if (!supervisor(dc)) + goto priv_insn; + if (gen_trap_ifnofpu(dc)) + goto jmp_insn; + goto nfq_insn; +#endif case 0x27: gen_op_load_fpr_DT0(DFPREG(rd)); gen_op_ldst(stdf); @@ -2675,6 +2681,13 @@ static void disas_sparc_insn(DisasContext * dc) gen_op_fpexception_im(FSR_FTT_UNIMPFPOP); dc->is_br = 1; return; +#if !defined(CONFIG_USER_ONLY) + nfq_insn: + save_state(dc); + gen_op_fpexception_im(FSR_FTT_SEQ_ERROR); + dc->is_br = 1; + return; +#endif #ifndef TARGET_SPARC64 ncp_insn: save_state(dc); -- cgit v1.2.3