diff --git a/source/graphics/Color.cpp b/source/graphics/Color.cpp index 221844c630..f8dc267b3a 100644 --- a/source/graphics/Color.cpp +++ b/source/graphics/Color.cpp @@ -13,7 +13,7 @@ #include "maths/MathUtil.h" #include "graphics/SColor.h" -#if ARCH_IA32 || ARCH_AMD64 +#if ARCH_X86_X64 # include # include "lib/sysdep/arch/x86_x64/x86_x64.h" #endif @@ -33,7 +33,7 @@ SColor4ub (*ConvertRGBColorTo4ub)(const RGBColor& src) = fallback_ConvertRGBColo // Assembler-optimized function for color conversion -#if ARCH_IA32 || ARCH_AMD64 +#if ARCH_X86_X64 static SColor4ub sse_ConvertRGBColorTo4ub(const RGBColor& src) { const __m128 zero = _mm_setzero_ps(); @@ -69,7 +69,7 @@ void ColorActivateFastImpl() if(0) { } -#if ARCH_IA32 || ARCH_AMD64 +#if ARCH_X86_X64 else if (x86_x64_cap(X86_X64_CAP_SSE)) { ConvertRGBColorTo4ub = sse_ConvertRGBColorTo4ub; diff --git a/source/lib/sysdep/arch.h b/source/lib/sysdep/arch.h index 052e2bcf42..d206e2ea80 100644 --- a/source/lib/sysdep/arch.h +++ b/source/lib/sysdep/arch.h @@ -49,6 +49,12 @@ # define ARCH_MIPS 0 #endif +// ensure exactly one architecture has been detected +#if (ARCH_IA32+ARCH_IA64+ARCH_AMD64+ARCH_ALPHA+ARCH_ARM+ARCH_MIPS) != 1 +# error "architecture not correctly detected (either none or multiple ARCH_* defined)" +#endif + +// "X86_X64"-specific code requires either IA-32 or AMD64 #define ARCH_X86_X64 (ARCH_IA32|ARCH_AMD64) #endif // #ifndef INCLUDED_ARCH diff --git a/source/lib/sysdep/arch/x86_x64/x86_x64.h b/source/lib/sysdep/arch/x86_x64/x86_x64.h index 87159e5c21..de8c146f2a 100644 --- a/source/lib/sysdep/arch/x86_x64/x86_x64.h +++ b/source/lib/sysdep/arch/x86_x64/x86_x64.h @@ -11,8 +11,8 @@ #ifndef INCLUDED_X86_X64 #define INCLUDED_X86_X64 -#if !ARCH_IA32 && !ARCH_AMD64 -#error "including x86_x64.h without ARCH_IA32=1 or ARCH_AMD64=1" +#if !ARCH_X86_X64 +#error "including x86_x64.h without ARCH_X86_X64=1" #endif /** diff --git a/source/lib/sysdep/os/win/wdbg_sym.cpp b/source/lib/sysdep/os/win/wdbg_sym.cpp index aee8f8e5f0..7f80f9de2e 100644 --- a/source/lib/sysdep/os/win/wdbg_sym.cpp +++ b/source/lib/sysdep/os/win/wdbg_sym.cpp @@ -312,7 +312,7 @@ LibError wdbg_sym_WalkStack(StackFrameCallback cb, uintptr_t cbData, const CONTE // this MUST be done inline and not in an external function because // compiler-generated prolog code trashes some registers. -#if ARCH_IA32 && !ARCH_AMD64 +#if ARCH_IA32 ia32_asm_GetCurrentContext(&context); #else if(!s_RtlCaptureContext) diff --git a/source/lib/sysdep/os/win/whrt/tsc.cpp b/source/lib/sysdep/os/win/whrt/tsc.cpp index 0f89054ed5..4970d0a99b 100644 --- a/source/lib/sysdep/os/win/whrt/tsc.cpp +++ b/source/lib/sysdep/os/win/whrt/tsc.cpp @@ -18,7 +18,7 @@ #include "lib/sysdep/os/win/win.h" #include "lib/sysdep/os/win/wutil.h" -#if ARCH_IA32 || ARCH_AMD64 +#if ARCH_X86_X64 # include "lib/sysdep/arch/x86_x64/x86_x64.h" // x86_x64_rdtsc # include "lib/sysdep/arch/x86_x64/topology.h" #endif @@ -36,7 +36,7 @@ enum AmdPowerNowFlags static bool IsThrottlingPossible() { -#if ARCH_IA32 || ARCH_AMD64 +#if ARCH_X86_X64 x86_x64_CpuidRegs regs; switch(x86_x64_Vendor()) { @@ -71,7 +71,7 @@ public: LibError Activate() { -#if ARCH_IA32 || ARCH_AMD64 +#if ARCH_X86_X64 if(!x86_x64_cap(X86_X64_CAP_TSC)) return ERR::NO_SYS; // NOWARN (CPU doesn't support RDTSC) #endif @@ -114,7 +114,7 @@ public: return false; } -#if ARCH_IA32 || ARCH_AMD64 +#if ARCH_X86_X64 // recent CPU: if(x86_x64_Generation() >= 7) { diff --git a/source/lib/timer.cpp b/source/lib/timer.cpp index 215e5c27ff..4420402513 100644 --- a/source/lib/timer.cpp +++ b/source/lib/timer.cpp @@ -25,7 +25,7 @@ # include #endif #include "lib/config2.h" // CONFIG2_TIMER_ALLOW_RDTSC -#if (ARCH_IA32 || ARCH_AMD64) && CONFIG2_TIMER_ALLOW_RDTSC +#if ARCH_X86_X64 && CONFIG2_TIMER_ALLOW_RDTSC # include "lib/sysdep/arch/x86_x64/x86_x64.h" // x86_x64_rdtsc #endif