Instructions that should not check pending FPU exceptions

This commit is contained in:
Stanislav Shwartsman 2003-12-28 18:58:15 +00:00
parent 0eb71999db
commit fd60a984a0
4 changed files with 21 additions and 21 deletions

View File

@ -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

View File

@ -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 },

View File

@ -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
}

View File

@ -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 },