From db1a6ddf3889be8031befe54fbdb9cc544051097 Mon Sep 17 00:00:00 2001 From: janwas Date: Wed, 9 Mar 2005 12:57:52 +0000 Subject: [PATCH] minor improvements This was SVN commit r1974. --- source/lib/sysdep/ia32.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/source/lib/sysdep/ia32.cpp b/source/lib/sysdep/ia32.cpp index eb094567fc..4fe0ddddc2 100755 --- a/source/lib/sysdep/ia32.cpp +++ b/source/lib/sysdep/ia32.cpp @@ -135,11 +135,18 @@ enum Regs EDX }; +enum MiscCpuCapBits +{ + // AMD PowerNow! flags (returned in edx by CPUID 0x80000007) + POWERNOW_FREQ_ID_CTRL = 2 +}; + static bool cpuid(u32 func, u32* regs) { if(func > max_ext_func) return false; + // (optimized for size) __asm { mov eax, [func] @@ -498,14 +505,16 @@ static void check_smp() static void check_speedstep() { - if(vendor == INTEL && ia32_cap(EST)) - cpu_speedstep = 1; - - if(vendor == AMD) + if(vendor == INTEL) + { + if(ia32_cap(EST)) + cpu_speedstep = 1; + } + else if(vendor == AMD) { u32 regs[4]; if(cpuid(0x80000007, regs)) - if(regs[EDX] & 2) // frequency ID control + if(regs[EDX] & POWERNOW_FREQ_ID_CTRL) cpu_speedstep = 1; } }