diff --git a/neo/sys/win32/win_cpu.cpp b/neo/sys/win32/win_cpu.cpp index c89aca6e..08fb57af 100644 --- a/neo/sys/win32/win_cpu.cpp +++ b/neo/sys/win32/win_cpu.cpp @@ -46,12 +46,12 @@ Sys_GetClockTicks ================ */ double Sys_GetClockTicks( void ) { -#if 0 +#ifndef _MSC_VER LARGE_INTEGER li; QueryPerformanceCounter( &li ); - return = (double ) li.LowPart + (double) 0xFFFFFFFF * li.HighPart; + return (double ) li.LowPart + (double) 0xFFFFFFFF * li.HighPart; #else @@ -78,7 +78,7 @@ Sys_ClockTicksPerSecond */ double Sys_ClockTicksPerSecond( void ) { static double ticks = 0; -#if 0 +#ifndef _MSC_VER if ( !ticks ) { LARGE_INTEGER li; @@ -130,6 +130,7 @@ HasCPUID ================ */ static bool HasCPUID( void ) { +#ifdef _MSC_VER __asm { pushfd // save eflags @@ -159,6 +160,9 @@ err: return false; good: return true; +#else + return false; +#endif } #define _REG_EAX 0 @@ -172,6 +176,7 @@ CPUID ================ */ static void CPUID( int func, unsigned regs[4] ) { +#ifdef _MSC_VER unsigned regEAX, regEBX, regECX, regEDX; __asm pusha @@ -188,9 +193,14 @@ static void CPUID( int func, unsigned regs[4] ) { regs[_REG_EBX] = regEBX; regs[_REG_ECX] = regECX; regs[_REG_EDX] = regEDX; +#else + regs[0] = 0; + regs[1] = 0; + regs[2] = 0; + regs[3] = 0; +#endif } - /* ================ IsAMD @@ -344,6 +354,7 @@ LogicalProcPerPhysicalProc // processors per physical processor when execute cpuid with // eax set to 1 static unsigned char LogicalProcPerPhysicalProc( void ) { +#ifdef _MSC_VER unsigned int regebx = 0; __asm { mov eax, 1 @@ -351,6 +362,9 @@ static unsigned char LogicalProcPerPhysicalProc( void ) { mov regebx, ebx } return (unsigned char) ((regebx & NUM_LOGICAL_BITS) >> 16); +#else + return 0; +#endif } /* @@ -362,6 +376,7 @@ GetAPIC_ID // initial APIC ID for the processor this code is running on. // Default value = 0xff if HT is not supported static unsigned char GetAPIC_ID( void ) { +#ifdef _MSC_VER unsigned int regebx = 0; __asm { mov eax, 1 @@ -369,6 +384,9 @@ static unsigned char GetAPIC_ID( void ) { mov regebx, ebx } return (unsigned char) ((regebx & INITIAL_APIC_ID_BITS) >> 24); +#else + return '\0'; +#endif } /* @@ -502,6 +520,7 @@ HasHTT ================ */ static bool HasDAZ( void ) { +#ifdef _MSC_VER __declspec(align(16)) unsigned char FXSaveArea[512]; unsigned char *FXArea = FXSaveArea; DWORD dwMask = 0; @@ -524,6 +543,9 @@ static bool HasDAZ( void ) { dwMask = *(DWORD *)&FXArea[28]; // Read the MXCSR Mask return ( ( dwMask & ( 1 << 6 ) ) == ( 1 << 6 ) ); // Return if the DAZ bit is set +#else + return false; +#endif } /* @@ -532,6 +554,7 @@ Sys_GetCPUId ================ */ int Sys_GetCPUId( void ) { +#ifdef _MSC_VER int flags; // verify we're at least a Pentium or 486 with CPUID support @@ -587,6 +610,9 @@ int Sys_GetCPUId( void ) { } return flags; +#else + return CPUID_GENERIC; +#endif } @@ -646,6 +672,7 @@ Sys_FPU_PrintStateFlags =============== */ int Sys_FPU_PrintStateFlags( char *ptr, int ctrl, int stat, int tags, int inof, int inse, int opof, int opse ) { +#ifdef _MSC_VER int i, length = 0; length += sprintf( ptr+length, "CTRL = %08x\n" @@ -673,6 +700,9 @@ int Sys_FPU_PrintStateFlags( char *ptr, int ctrl, int stat, int tags, int inof, length += sprintf( ptr+length, " %-30s = %d\n", "Top of stack pointer", (stat>>11)&7 ); return length; +#else + return 0; +#endif } /* @@ -681,6 +711,7 @@ Sys_FPU_StackIsEmpty =============== */ bool Sys_FPU_StackIsEmpty( void ) { +#ifdef _MSC_VER __asm { mov eax, statePtr fnstenv [eax] @@ -692,6 +723,9 @@ bool Sys_FPU_StackIsEmpty( void ) { return false; empty: return true; +#else + return true; +#endif } /* @@ -700,6 +734,7 @@ Sys_FPU_ClearStack =============== */ void Sys_FPU_ClearStack( void ) { +#ifdef _MSC_VER __asm { mov eax, statePtr fnstenv [eax] @@ -715,6 +750,7 @@ void Sys_FPU_ClearStack( void ) { jmp emptyStack done: } +#endif } /* @@ -725,6 +761,7 @@ Sys_FPU_GetState =============== */ const char *Sys_FPU_GetState( void ) { +#ifdef _MSC_VER double fpuStack[8] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; double *fpuStackPtr = fpuStack; int i, numValues; @@ -821,6 +858,9 @@ const char *Sys_FPU_GetState( void ) { Sys_FPU_PrintStateFlags( ptr, ctrl, stat, tags, inof, inse, opof, opse ); return fpuString; +#else + return ""; +#endif } /* @@ -829,6 +869,7 @@ Sys_FPU_EnableExceptions =============== */ void Sys_FPU_EnableExceptions( int exceptions ) { +#ifdef _MSC_VER __asm { mov eax, statePtr mov ecx, exceptions @@ -841,6 +882,7 @@ void Sys_FPU_EnableExceptions( int exceptions ) { mov word ptr [eax], bx fldcw word ptr [eax] } +#endif } /* @@ -849,6 +891,7 @@ Sys_FPU_SetPrecision =============== */ void Sys_FPU_SetPrecision( int precision ) { +#ifdef _MSC_VER short precisionBitTable[4] = { 0, 1, 3, 0 }; short precisionBits = precisionBitTable[precision & 3] << 8; short precisionMask = ~( ( 1 << 9 ) | ( 1 << 8 ) ); @@ -863,6 +906,7 @@ void Sys_FPU_SetPrecision( int precision ) { mov word ptr [eax], bx fldcw word ptr [eax] } +#endif } /* @@ -871,6 +915,7 @@ Sys_FPU_SetRounding ================ */ void Sys_FPU_SetRounding( int rounding ) { +#ifdef _MSC_VER short roundingBitTable[4] = { 0, 1, 2, 3 }; short roundingBits = roundingBitTable[rounding & 3] << 10; short roundingMask = ~( ( 1 << 11 ) | ( 1 << 10 ) ); @@ -885,6 +930,7 @@ void Sys_FPU_SetRounding( int rounding ) { mov word ptr [eax], bx fldcw word ptr [eax] } +#endif } /* @@ -893,6 +939,7 @@ Sys_FPU_SetDAZ ================ */ void Sys_FPU_SetDAZ( bool enable ) { +#ifdef _MSC_VER DWORD dwData; _asm { @@ -906,6 +953,7 @@ void Sys_FPU_SetDAZ( bool enable ) { mov dwData, eax LDMXCSR dword ptr dwData } +#endif } /* @@ -914,6 +962,7 @@ Sys_FPU_SetFTZ ================ */ void Sys_FPU_SetFTZ( bool enable ) { +#ifdef _MSC_VER DWORD dwData; _asm { @@ -927,4 +976,5 @@ void Sys_FPU_SetFTZ( bool enable ) { mov dwData, eax LDMXCSR dword ptr dwData } +#endif } diff --git a/neo/sys/win32/win_shared.cpp b/neo/sys/win32/win_shared.cpp index 8b760861..d5df2801 100644 --- a/neo/sys/win32/win_shared.cpp +++ b/neo/sys/win32/win_shared.cpp @@ -39,7 +39,7 @@ If you have questions concerning this license or the applicable additional terms #include #include -#ifndef ID_DEDICATED +#if !defined(ID_DEDICATED) && !defined(__MINGW32__) #include #include #include @@ -110,7 +110,7 @@ returns in megabytes ================ */ int Sys_GetVideoRam( void ) { -#ifdef ID_DEDICATED +#if defined(ID_DEDICATED) || defined(__MINGW32__) return 0; #else unsigned int retSize = 64;