mirror of https://gitee.com/openkylin/qemu.git
Fix stdfq op (Aurelien Jarno)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2604 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
a4d17f1992
commit
9143e59842
|
@ -127,6 +127,7 @@
|
|||
#define FSR_FTT_MASK (FSR_FTT2 | FSR_FTT1 | FSR_FTT0)
|
||||
#define FSR_FTT_IEEE_EXCP (1 << 14)
|
||||
#define FSR_FTT_UNIMPFPOP (3 << 14)
|
||||
#define FSR_FTT_SEQ_ERROR (4 << 14)
|
||||
#define FSR_FTT_INVAL_FPR (6 << 14)
|
||||
|
||||
#define FSR_FCC1 (1<<11)
|
||||
|
@ -239,7 +240,7 @@ typedef struct CPUSPARCState {
|
|||
#else
|
||||
#define GET_FSR32(env) (env->fsr)
|
||||
#define PUT_FSR32(env, val) do { uint32_t _tmp = val; \
|
||||
env->fsr = (_tmp & 0xcfc1ffff) | (env->fsr & 0x000e0000); \
|
||||
env->fsr = (_tmp & 0xcfc1dfff) | (env->fsr & 0x000e0000); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue