mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-11-23 02:40:26 +01:00
The control87 is a fake one when using USE_PORTABLE_C, regardless the architecture
This commit is contained in:
parent
efde059273
commit
2ccc337898
50
Sources/Engine/Math/Float.cpp
Normal file → Executable file
50
Sources/Engine/Math/Float.cpp
Normal file → Executable file
|
@ -17,32 +17,30 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
|
||||||
#include <Engine/Math/Float.h>
|
#include <Engine/Math/Float.h>
|
||||||
|
|
||||||
#if (defined __GNU_INLINE__)
|
#define MCW_PC 0x0300
|
||||||
#define MCW_PC 0x0300
|
|
||||||
#define _MCW_PC MCW_PC
|
#define _MCW_PC MCW_PC
|
||||||
#define _PC_24 0x0000
|
#define _PC_24 0x0000
|
||||||
#define _PC_53 0x0200
|
#define _PC_53 0x0200
|
||||||
#define _PC_64 0x0300
|
#define _PC_64 0x0300
|
||||||
|
|
||||||
|
#ifdef USE_PORTABLE_C
|
||||||
|
// Fake control87 for USE_PORTABLE_C version
|
||||||
|
inline ULONG _control87(WORD newcw, WORD mask)
|
||||||
|
{
|
||||||
|
static WORD fpw=_PC_64;
|
||||||
|
if (mask != 0)
|
||||||
|
{
|
||||||
|
fpw &= ~mask;
|
||||||
|
fpw |= (newcw & mask);
|
||||||
|
}
|
||||||
|
return(fpw);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
|
||||||
|
#if (defined __GNU_INLINE__)
|
||||||
|
|
||||||
inline ULONG _control87(WORD newcw, WORD mask)
|
inline ULONG _control87(WORD newcw, WORD mask)
|
||||||
{
|
{
|
||||||
#if __POWERPC__
|
|
||||||
static WORD fpw=_PC_64;
|
|
||||||
if (mask != 0)
|
|
||||||
{
|
|
||||||
fpw &= ~mask;
|
|
||||||
fpw |= (newcw & mask);
|
|
||||||
}
|
|
||||||
return(fpw);
|
|
||||||
#elif defined(__arm__)
|
|
||||||
static WORD fpw=_PC_64;
|
|
||||||
if (mask != 0)
|
|
||||||
{
|
|
||||||
fpw &= ~mask;
|
|
||||||
fpw |= (newcw & mask);
|
|
||||||
}
|
|
||||||
return(fpw);
|
|
||||||
#else
|
|
||||||
WORD fpw = 0;
|
WORD fpw = 0;
|
||||||
|
|
||||||
// get the current FPU control word...
|
// get the current FPU control word...
|
||||||
|
@ -55,16 +53,10 @@ inline ULONG _control87(WORD newcw, WORD mask)
|
||||||
__asm__ __volatile__ (" fldcw %0" : : "m" (fpw) : "memory");
|
__asm__ __volatile__ (" fldcw %0" : : "m" (fpw) : "memory");
|
||||||
}
|
}
|
||||||
return(fpw);
|
return(fpw);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// (for intel compiler...)
|
// (for intel compiler...)
|
||||||
#elif ((defined __MSVC_INLINE__) && (!defined _MSC_VER))
|
#elif ((defined __MSVC_INLINE__) && (!defined _MSC_VER))
|
||||||
#define MCW_PC 0x0300
|
|
||||||
#define _MCW_PC MCW_PC
|
|
||||||
#define _PC_24 0x0000
|
|
||||||
#define _PC_53 0x0200
|
|
||||||
#define _PC_64 0x0300
|
|
||||||
|
|
||||||
inline ULONG _control87(WORD newcw, WORD mask)
|
inline ULONG _control87(WORD newcw, WORD mask)
|
||||||
{
|
{
|
||||||
|
@ -85,7 +77,7 @@ inline ULONG _control87(WORD newcw, WORD mask)
|
||||||
#elif (!defined _MSC_VER)
|
#elif (!defined _MSC_VER)
|
||||||
#error Implement for your platform, or add a stub conditional here.
|
#error Implement for your platform, or add a stub conditional here.
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
/* Get current precision setting of FPU. */
|
/* Get current precision setting of FPU. */
|
||||||
enum FPUPrecisionType GetFPUPrecision(void)
|
enum FPUPrecisionType GetFPUPrecision(void)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user