James Eder : ntdll: Add detection for Revision in get_cpuinfo().

Alexandre Julliard julliard at winehq.org
Mon Oct 22 13:42:44 CDT 2012


Module: wine
Branch: master
Commit: ebc7ffd5273292ed51108dd6b048db70a207223d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ebc7ffd5273292ed51108dd6b048db70a207223d

Author: James Eder <jimportal at gmail.com>
Date:   Sat Oct 20 18:40:46 2012 -0600

ntdll: Add detection for Revision in get_cpuinfo().

---

 dlls/ntdll/nt.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index ec226ae..c1cf38b 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -910,6 +910,11 @@ static inline void get_cpuinfo(SYSTEM_CPU_INFORMATION* info)
             if (info->Level == 0xf)  /* AMD says to add the extended family to the family if family is 0xf */
                 info->Level += (regs2[0] >> 20) & 0xff;
 
+            /* repack model and stepping to make a "revision" */
+            info->Revision  = ((regs2[0] >> 16) & 0xf) << 12; /* extended model */
+            info->Revision |= ((regs2[0] >> 4 ) & 0xf) << 8;  /* model          */
+            info->Revision |= regs2[0] & 0xf;                 /* stepping       */
+
             do_cpuid(0x80000000, regs);  /* get vendor cpuid level */
             if (regs[0] >= 0x80000001)
             {
@@ -925,6 +930,11 @@ static inline void get_cpuinfo(SYSTEM_CPU_INFORMATION* info)
             info->Level = ((regs2[0] >> 8) & 0xf) + ((regs2[0] >> 20) & 0xff); /* family + extended family */
             if(info->Level == 15) info->Level = 6;
 
+            /* repack model and stepping to make a "revision" */
+            info->Revision  = ((regs2[0] >> 16) & 0xf) << 12; /* extended model */
+            info->Revision |= ((regs2[0] >> 4 ) & 0xf) << 8;  /* model          */
+            info->Revision |= regs2[0] & 0xf;                 /* stepping       */
+
             if(regs2[3] & (1 << 21)) info->FeatureSet |= CPU_FEATURE_DS;
             user_shared_data->ProcessorFeatures[PF_VIRT_FIRMWARE_ENABLED] = (regs2[2] & (1 << 5 )) >> 5;
 
@@ -938,6 +948,10 @@ static inline void get_cpuinfo(SYSTEM_CPU_INFORMATION* info)
         else
         {
             info->Level = (regs2[0] >> 8) & 0xf; /* family */
+
+            /* repack model and stepping to make a "revision" */
+            info->Revision = ((regs2[0] >> 4 ) & 0xf) << 8;  /* model    */
+            info->Revision |= regs2[0] & 0xf;                /* stepping */
         }
     }
 }




More information about the wine-cvs mailing list