2003-04-23 00:21:34 +04:00
|
|
|
/////////////////////////////////////////////////////////////////////////
|
2003-12-27 16:50:06 +03:00
|
|
|
// $Id: fpu.cc,v 1.4 2003-12-27 13:50:06 sshwarts Exp $
|
2003-04-23 00:21:34 +04:00
|
|
|
/////////////////////////////////////////////////////////////////////////
|
2001-04-10 06:20:02 +04:00
|
|
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
2001-04-10 05:04:59 +04:00
|
|
|
//
|
|
|
|
// MandrakeSoft S.A.
|
|
|
|
// 43, rue d'Aboukir
|
|
|
|
// 75002 Paris - France
|
|
|
|
// http://www.linux-mandrake.com/
|
|
|
|
// http://www.mandrakesoft.com/
|
|
|
|
//
|
|
|
|
// This library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2 of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with this library; if not, write to the Free Software
|
|
|
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
|
|
|
|
|
|
|
|
#include "bochs.h"
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
#define NEED_CPU_REG_SHORTCUTS 1
|
|
|
|
#include "bochs.h"
|
|
|
|
#define LOG_THIS BX_CPU_THIS_PTR
|
2001-04-10 05:04:59 +04:00
|
|
|
|
|
|
|
|
2003-08-01 13:32:33 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
void BX_CPU_C::prepareFPU(void)
|
|
|
|
{
|
|
|
|
if (BX_CPU_THIS_PTR cr0.em || BX_CPU_THIS_PTR cr0.ts) {
|
|
|
|
exception(BX_NM_EXCEPTION, 0, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
2001-04-10 05:04:59 +04:00
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FWAIT(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_CPU_LEVEL < 3
|
|
|
|
// WAIT doesn't generate single steps on 8086.
|
|
|
|
// The same goes for prefix instructions, and instructions which
|
|
|
|
// modify segment registers. (pg4-16)
|
|
|
|
BX_PANIC(("FWAIT: not implemented for < 386"));
|
|
|
|
#else // BX_CPU_LEVEL >= 3
|
|
|
|
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
if (FPU_PARTIAL_STATUS & FPU_SW_SUMMARY)
|
|
|
|
exception(BX_MF_EXCEPTION, 0, 0);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FWAIT: requred FPU, use --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif // BX_CPU_LEVEL >= 3
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FLD_STi(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
2001-04-10 05:04:59 +04:00
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FLD_STi: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FLD_SINGLE_REAL(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
2001-04-10 05:04:59 +04:00
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FLD_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FLD_DOUBLE_REAL(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
2001-04-10 05:04:59 +04:00
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FLD_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FLD_EXTENDED_REAL(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
2001-04-10 05:04:59 +04:00
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FLD_EXTENDED_REAL: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FILD_WORD_INTEGER(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
2001-04-10 05:04:59 +04:00
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FILD_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FILD_DWORD_INTEGER(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
2001-04-10 05:04:59 +04:00
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FILD_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FILD_QWORD_INTEGER(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
2001-04-10 05:04:59 +04:00
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FILD_QWORD_INTEGER: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FLDENV(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
2001-04-10 05:04:59 +04:00
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FLDENV: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FLDCW(bxInstruction_c *i)
|
2001-04-10 05:04:59 +04:00
|
|
|
{
|
2003-12-27 16:50:06 +03:00
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FLDCW: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
2001-04-10 05:04:59 +04:00
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FLD1(bxInstruction_c *i)
|
|
|
|
{
|
2003-09-01 23:05:10 +04:00
|
|
|
#if BX_SUPPORT_FPU
|
2003-08-01 13:32:33 +04:00
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
fpu_execute(i);
|
2001-04-10 05:04:59 +04:00
|
|
|
#else
|
2003-12-27 16:50:06 +03:00
|
|
|
BX_INFO(("FLD1: required FPU, configure --enable-fpu"));
|
2001-04-10 05:04:59 +04:00
|
|
|
#endif
|
2003-12-27 16:50:06 +03:00
|
|
|
}
|
2001-04-10 05:04:59 +04:00
|
|
|
|
2003-12-27 16:50:06 +03:00
|
|
|
void BX_CPU_C::FLDL2T(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FLDL2T: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FLDL2E(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FLDL2E: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FLDPI(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FLDPI: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FLDLG2(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FLDLG2: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FLDLN2(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FLDLN2: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FLDZ(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FLDZ: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FBLD_PACKED_BCD(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FBLD_PACKED_BCD: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FST_STi(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FST_STi: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSTP_STi(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSTP_STi: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FST_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FST_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSTP_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSTP_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FST_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FST_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSTP_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSTP_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSTP_EXTENDED_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSTP_EXTENDED_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIST_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIST_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISTP_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISTP_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIST_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIST_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISTP_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISTP_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISTP_QWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISTP_QWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSTENV(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSTENV: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FNSTCW(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FNSTCW: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FNSTSW(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FNSTSW: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FNSTSW_AX(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FNSTSW_AX: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FBSTP_PACKED_BCD(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FBSTP_PACKED_BCD: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISTTP16(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_PNI
|
|
|
|
BX_PANIC(("FISTTP16: instruction still not implemented"));
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISTTP16: required PNI, configure --enable-pni"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISTTP32(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_PNI
|
|
|
|
BX_PANIC(("FISTTP32: instruction still not implemented"));
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISTTP32: required PNI, configure --enable-pni"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISTTP64(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_PNI
|
|
|
|
BX_PANIC(("FISTTP64: instruction still not implemented"));
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISTTP64: required PNI, configure --enable-pni"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FRSTOR(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FRSTOR: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSAVE(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSAVE: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FADD_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FADD_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FADD_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FADD_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FADDP_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FADDP_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FADD_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FADD_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FADD_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FADD_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIADD_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIADD_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIADD_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIADD_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FMUL_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FMUL_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FMUL_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FMUL_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FMULP_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FMULP_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FMUL_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FMUL_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FMUL_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FMUL_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIMUL_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIMUL_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIMUL_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIMUL_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUB_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUB_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUBR_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUBR_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUB_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUB_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUBR_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUBR_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUBP_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUBP_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUBRP_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUBRP_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUB_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUB_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUBR_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUBR_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUB_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUB_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSUBR_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSUBR_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISUB_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISUB_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISUBR_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISUBR_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISUB_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISUB_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FISUBR_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FISUBR_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIV_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIV_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIVR_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIVR_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIV_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIV_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIVR_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIVR_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIVP_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIVP_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIVRP_STi_ST0(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIVRP_STi_ST0: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIV_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIV_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIVR_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIVR_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIV_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIV_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDIVR_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDIVR_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIDIV_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIDIV_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIDIVR_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIDIVR_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIDIV_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIDIV_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FIDIVR_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FIDIVR_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOM_STi(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOM_STi: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOMP_STi(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOMP_STi: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOMI_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOMI_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOMIP_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOMIP_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FUCOMI_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FUCOMI_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FUCOMIP_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FUCOMIP_ST0_STj: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FUCOM_STi(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FUCOM_STi: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FUCOMP_STi(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FUCOMP_STi: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOM_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOM_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOMP_SINGLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOMP_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOM_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOM_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOMP_DOUBLE_REAL(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOMP_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FICOM_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FICOM_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FICOMP_WORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FICOMP_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FICOM_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FICOM_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FICOMP_DWORD_INTEGER(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FICOMP_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOMPP(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOMPP: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FUCOMPP(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FUCOMPP: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCMOVB_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU && (BX_CPU_LEVEL == 6)
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCMOVB_ST0_STj: required P6 FPU, configure --enable-fpu, cpu-level=6"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCMOVE_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU && (BX_CPU_LEVEL == 6)
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCMOVE_ST0_STj: required P6 FPU, configure --enable-fpu, cpu-level=6"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCMOVBE_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU && (BX_CPU_LEVEL == 6)
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCMOVBE_ST0_STj: required P6 FPU, configure --enable-fpu, cpu-level=6"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCMOVU_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU && (BX_CPU_LEVEL == 6)
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCMOVU_ST0_STj: required P6 FPU, configure --enable-fpu, cpu-level=6"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCMOVNB_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU && (BX_CPU_LEVEL == 6)
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCMOVNB_ST0_STj: required P6 FPU, configure --enable-fpu, cpu-level=6"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCMOVNE_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU && (BX_CPU_LEVEL == 6)
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCMOVNE_ST0_STj: required P6 FPU, configure --enable-fpu, cpu-level=6"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCMOVNBE_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU && (BX_CPU_LEVEL == 6)
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCMOVNBE_ST0_STj: required P6 FPU, configure --enable-fpu, cpu-level=6"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCMOVNU_ST0_STj(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU && (BX_CPU_LEVEL == 6)
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCMOVNU_ST0_STj: required P6 FPU, configure --enable-fpu, cpu-level=6"));
|
|
|
|
UndefinedOpcode(i);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FXCH_STi(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FXCH_STi: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FNOP(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
// Perform no FPU operation. This instruction takes up space in the
|
|
|
|
// instruction stream but does not affect the FPU or machine
|
|
|
|
// context, except the EIP register.
|
|
|
|
#else
|
|
|
|
BX_INFO(("FNOP: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCHS(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCHS: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FABS(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FABS: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FTST(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FTST: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FXAM(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FXAM: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::F2XM1(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("F2XM1: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FYL2X(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FYL2X: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FPTAN(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FPTAN: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FPATAN(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FPATAN: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FXTRACT(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FXTRACT: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FPREM1(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FPREM1: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FDECSTP(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FDECSTP: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FINCSTP(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FINCSTP: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FPREM(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FPREM: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FYL2XP1(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FYL2XP1: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSQRT(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSQRT: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSINCOS(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSINCOS: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FRNDINT(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FRNDINT: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSCALE(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSCALE: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FSIN(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FSIN: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCOS(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCOS: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FCLEX(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FCLEX: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FNINIT(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FNINIT: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void BX_CPU_C::FFREE_STi(bxInstruction_c *i)
|
|
|
|
{
|
|
|
|
#if BX_SUPPORT_FPU
|
|
|
|
BX_CPU_THIS_PTR prepareFPU();
|
|
|
|
|
|
|
|
fpu_execute(i);
|
|
|
|
#else
|
|
|
|
BX_INFO(("FFREE_STi: required FPU, configure --enable-fpu"));
|
|
|
|
#endif
|
2001-04-10 05:04:59 +04:00
|
|
|
}
|