]> sourceware.org Git - glibc.git/commitdiff
* sysdeps/x86_64/cacheinfo.c (handle_amd): Fix computation of cvs/fedora-glibc-20070825T1839
authorUlrich Drepper <drepper@redhat.com>
Sat, 25 Aug 2007 17:24:23 +0000 (17:24 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 25 Aug 2007 17:24:23 +0000 (17:24 +0000)
associativity for fully-associative caches.

ChangeLog
sysdeps/x86_64/cacheinfo.c

index 7de59d8f68ac824d34a2bbef3620bcd5271472b4..9374c90f9dcacedc734a02c9298fef4e03567178 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2007-08-25  Ulrich Drepper  <drepper@redhat.com>
 
+       * sysdeps/x86_64/cacheinfo.c (handle_amd): Fix computation of
+       associativity for fully-associative caches.
+
        * sysdeps/x86_64/cacheinfo.c (handle_amd): Handle L3 cache
        requests.  Fill on more associativity values for L2.
        Patch mostly by Evandro Menezes.
index eef7fa8726d03d24e66dc3027562cf5f1a4ec4a4..793dc2d3577f091546fd6a033290eebc1e176a80 100644 (file)
@@ -296,14 +296,13 @@ handle_amd (int name)
       return (ecx & 0xf000) == 0 ? 0 : (ecx >> 6) & 0x3fffc00;
 
     case _SC_LEVEL2_CACHE_ASSOC:
-      ecx >>= 12;
-      switch (ecx & 0xf)
+      switch ((ecx >> 12) & 0xf)
         {
         case 0:
         case 1:
         case 2:
         case 4:
-         return ecx & 0xf;
+         return (ecx >> 12) & 0xf;
        case 6:
          return 8;
        case 8:
@@ -319,7 +318,7 @@ handle_amd (int name)
        case 14:
          return 128;
        case 15:
-         return (ecx << 6) & 0x3fffc00;
+         return ((ecx >> 6) & 0x3fffc00) / (ecx & 0xff);
        default:
          return 0;
         }
@@ -332,14 +331,13 @@ handle_amd (int name)
       return (edx & 0xf000) == 0 ? 0 : (edx & 0x3ffc0000) << 1;
 
     case _SC_LEVEL3_CACHE_ASSOC:
-      edx >>= 12;
-      switch (edx & 0xf)
+      switch ((edx >> 12) & 0xf)
        {
        case 0:
        case 1:
        case 2:
        case 4:
-         return edx & 0xf;
+         return (edx >> 12) & 0xf;
        case 6:
          return 8;
        case 8:
@@ -355,7 +353,7 @@ handle_amd (int name)
        case 14:
          return 128;
        case 15:
-         return (edx & 0x3ffc0) << 13;
+         return ((edx & 0x3ffc0000) << 1) / (edx & 0xff);
        default:
          return 0;
        }
This page took 0.053332 seconds and 5 git commands to generate.