Instructions that should not check pending FPU exceptions
This commit is contained in:
parent
0eb71999db
commit
fd60a984a0
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cpu.h,v 1.150 2003-12-27 13:50:05 sshwarts Exp $
|
||||
// $Id: cpu.h,v 1.151 2003-12-28 18:58:15 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -1889,7 +1889,7 @@ union {
|
||||
BX_SMF void FISTP_DWORD_INTEGER(bxInstruction_c *);
|
||||
BX_SMF void FISTP_QWORD_INTEGER(bxInstruction_c *);
|
||||
|
||||
BX_SMF void FSTENV(bxInstruction_c *);
|
||||
BX_SMF void FNSTENV(bxInstruction_c *);
|
||||
BX_SMF void FNSTCW(bxInstruction_c *);
|
||||
BX_SMF void FNSTSW(bxInstruction_c *);
|
||||
BX_SMF void FNSTSW_AX(bxInstruction_c *);
|
||||
@ -1901,7 +1901,7 @@ union {
|
||||
|
||||
// save restore
|
||||
BX_SMF void FRSTOR(bxInstruction_c *);
|
||||
BX_SMF void FSAVE(bxInstruction_c *);
|
||||
BX_SMF void FNSAVE(bxInstruction_c *);
|
||||
|
||||
// add
|
||||
BX_SMF void FADD_ST0_STj(bxInstruction_c *);
|
||||
@ -2011,7 +2011,7 @@ union {
|
||||
BX_SMF void FSCALE(bxInstruction_c *);
|
||||
BX_SMF void FSIN(bxInstruction_c *);
|
||||
BX_SMF void FCOS(bxInstruction_c *);
|
||||
BX_SMF void FCLEX(bxInstruction_c *);
|
||||
BX_SMF void FNCLEX(bxInstruction_c *);
|
||||
BX_SMF void FNINIT(bxInstruction_c *);
|
||||
BX_SMF void FFREE_STi(bxInstruction_c *);
|
||||
#endif
|
||||
|
@ -80,7 +80,7 @@ static BxOpcodeInfo_t BxOpcodeInfo_FPGroupD9[8] = {
|
||||
/* 3 */ { 0, &BX_CPU_C::FSTP_SINGLE_REAL },
|
||||
/* 4 */ { 0, &BX_CPU_C::FLDENV },
|
||||
/* 5 */ { 0, &BX_CPU_C::FLDCW },
|
||||
/* 6 */ { 0, &BX_CPU_C::FSTENV },
|
||||
/* 6 */ { 0, &BX_CPU_C::FNSTENV },
|
||||
/* 7 */ { 0, &BX_CPU_C::FNSTCW }
|
||||
};
|
||||
|
||||
@ -128,7 +128,7 @@ static BxOpcodeInfo_t BxOpcodeInfo_FPGroupDD[8] = {
|
||||
/* 3 */ { 0, &BX_CPU_C::FSTP_DOUBLE_REAL },
|
||||
/* 4 */ { 0, &BX_CPU_C::FRSTOR },
|
||||
/* 5 */ { 0, &BX_CPU_C::BxError },
|
||||
/* 6 */ { 0, &BX_CPU_C::FSAVE },
|
||||
/* 6 */ { 0, &BX_CPU_C::FNSAVE },
|
||||
/* 7 */ { 0, &BX_CPU_C::FNSTSW }
|
||||
};
|
||||
|
||||
@ -391,7 +391,7 @@ static BxOpcodeInfo_t BxOpcodeInfo_FloatingPoint[512] = {
|
||||
/* DB DF */ { 0, &BX_CPU_C::FCMOVNU_ST0_STj },
|
||||
/* DB E0 */ { 0, &BX_CPU_C::FNOP }, // feni (287 only)
|
||||
/* DB E1 */ { 0, &BX_CPU_C::FNOP }, // fdisi (287 only)
|
||||
/* DB E2 */ { 0, &BX_CPU_C::FCLEX },
|
||||
/* DB E2 */ { 0, &BX_CPU_C::FNCLEX },
|
||||
/* DB E3 */ { 0, &BX_CPU_C::FNINIT },
|
||||
/* DB E4 */ { 0, &BX_CPU_C::FNOP }, // fsetpm (287 only)
|
||||
/* DB E5 */ { 0, &BX_CPU_C::BxError },
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fpu.cc,v 1.4 2003-12-27 13:50:06 sshwarts Exp $
|
||||
// $Id: fpu.cc,v 1.5 2003-12-28 18:58:15 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
//
|
||||
@ -380,14 +380,14 @@ void BX_CPU_C::FISTP_QWORD_INTEGER(bxInstruction_c *i)
|
||||
#endif
|
||||
}
|
||||
|
||||
void BX_CPU_C::FSTENV(bxInstruction_c *i)
|
||||
void BX_CPU_C::FNSTENV(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_FPU
|
||||
BX_CPU_THIS_PTR prepareFPU();
|
||||
|
||||
fpu_execute(i);
|
||||
#else
|
||||
BX_INFO(("FSTENV: required FPU, configure --enable-fpu"));
|
||||
BX_INFO(("FNSTENV: required FPU, configure --enable-fpu"));
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -476,14 +476,14 @@ void BX_CPU_C::FRSTOR(bxInstruction_c *i)
|
||||
#endif
|
||||
}
|
||||
|
||||
void BX_CPU_C::FSAVE(bxInstruction_c *i)
|
||||
void BX_CPU_C::FNSAVE(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_FPU
|
||||
BX_CPU_THIS_PTR prepareFPU();
|
||||
|
||||
fpu_execute(i);
|
||||
#else
|
||||
BX_INFO(("FSAVE: required FPU, configure --enable-fpu"));
|
||||
BX_INFO(("FNSAVE: required FPU, configure --enable-fpu"));
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -1487,14 +1487,14 @@ void BX_CPU_C::FCOS(bxInstruction_c *i)
|
||||
#endif
|
||||
}
|
||||
|
||||
void BX_CPU_C::FCLEX(bxInstruction_c *i)
|
||||
void BX_CPU_C::FNCLEX(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_FPU
|
||||
BX_CPU_THIS_PTR prepareFPU();
|
||||
|
||||
fpu_execute(i);
|
||||
#else
|
||||
BX_INFO(("FCLEX: required FPU, configure --enable-fpu"));
|
||||
BX_INFO(("FNCLEX: required FPU, configure --enable-fpu"));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1532,8 +1532,8 @@ static BxDisasmOpcodeInfo_t BxDisasmFPGroupD9[8] = {
|
||||
/* 3 */ { "fstp", 0, Md, XX, XX },
|
||||
/* 4 */ { "fldenv", 0, Mx, XX, XX },
|
||||
/* 5 */ { "fldcw", 0, Ew, XX, XX },
|
||||
/* 6 */ { "fstenv", 0, Mx, XX, XX },
|
||||
/* 7 */ { "fstcw", 0, Mw, XX, XX }
|
||||
/* 6 */ { "fnstenv", 0, Mx, XX, XX },
|
||||
/* 7 */ { "fnstcw", 0, Mw, XX, XX }
|
||||
};
|
||||
|
||||
// DA (modrm is outside 00h - BFh) (mod != 11)
|
||||
@ -1580,8 +1580,8 @@ static BxDisasmOpcodeInfo_t BxDisasmFPGroupDD[8] = {
|
||||
/* 3 */ { "fstp", 0, Mq, XX, XX },
|
||||
/* 4 */ { "frstor", 0, Mx, XX, XX },
|
||||
/* 5 */ { "(invalid)", 0, XX, XX, XX },
|
||||
/* 6 */ { "fsave", 0, Mx, XX, XX },
|
||||
/* 7 */ { "fstsw", 0, Mw, XX, XX }
|
||||
/* 6 */ { "fnsave", 0, Mx, XX, XX },
|
||||
/* 7 */ { "fnstsw", 0, Mw, XX, XX }
|
||||
};
|
||||
|
||||
// DE (modrm is outside 00h - BFh) (mod != 11)
|
||||
@ -1841,8 +1841,8 @@ static BxDisasmOpcodeInfo_t BxDisasmOpcodeInfoFP[512] = {
|
||||
/* DA DF */ { "fcmovnu", 0, STj, STj, XX },
|
||||
/* DB E0 */ { "feni (287 only)", 0, XX, XX, XX },
|
||||
/* DB E1 */ { "fdisi (287 only)", 0, XX, XX, XX },
|
||||
/* DB E2 */ { "fclex", 0, XX, XX, XX },
|
||||
/* DB E3 */ { "finit", 0, XX, XX, XX },
|
||||
/* DB E2 */ { "fnclex", 0, XX, XX, XX },
|
||||
/* DB E3 */ { "fninit", 0, XX, XX, XX },
|
||||
/* DB E4 */ { "fsetpm (287 only)", 0, XX, XX, XX },
|
||||
/* DB E5 */ { "(invalid)", 0, XX, XX, XX },
|
||||
/* DB E6 */ { "(invalid)", 0, XX, XX, XX },
|
||||
@ -2103,7 +2103,7 @@ static BxDisasmOpcodeInfo_t BxDisasmOpcodeInfoFP[512] = {
|
||||
/* DE DD */ { "(invalid)", 0, XX, XX, XX },
|
||||
/* DE DE */ { "(invalid)", 0, XX, XX, XX },
|
||||
/* DE DF */ { "(invalid)", 0, XX, XX, XX },
|
||||
/* DF E0 */ { "fstsw", 0, AX, XX, XX },
|
||||
/* DF E0 */ { "fnstsw", 0, AX, XX, XX },
|
||||
/* DE E1 */ { "(invalid)", 0, XX, XX, XX },
|
||||
/* DE E2 */ { "(invalid)", 0, XX, XX, XX },
|
||||
/* DE E3 */ { "(invalid)", 0, XX, XX, XX },
|
||||
|
Loading…
Reference in New Issue
Block a user