Skip to content
  • Eduardo Habkost's avatar
    5e891bf8
    target-i386: Use #defines instead of magic numbers for CPUID cache info · 5e891bf8
    Eduardo Habkost authored
    
    
    This is an attempt to make the CPUID cache topology code clearer, by
    replacing the magic numbers in the code with #defines, and moving all
    the cache information to the same place in the file.
    
    I took care of comparing the assembly output of compiling
    target-i386/cpu.c before and after applying this change, to make sure
    not a single bit was changed on cpu_x86_cpuid() before and after
    applying this patch (unfortunately I had to manually check existing
    differences, because of __LINE__ expansions on
    object_class_dynamic_cast_assert() calls).
    
    This even keeps the code bug-compatible with the previous version: today
    the cache information returned on AMD cache information leaves (CPUID
    0x80000005 & 0x80000006) do not match the information returned on CPUID
    leaves 2 and 4. The L2 cache information on CPUID leaf 2 also doesn't
    match the information on CPUID leaf 2. The new constants should make it
    easier to eventually fix those inconsistencies. All inconsistencies I
    have found are documented in code comments.
    
    Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
    Reviewed-by: default avatarliguang <lig.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
    5e891bf8
    target-i386: Use #defines instead of magic numbers for CPUID cache info
    Eduardo Habkost authored
    
    
    This is an attempt to make the CPUID cache topology code clearer, by
    replacing the magic numbers in the code with #defines, and moving all
    the cache information to the same place in the file.
    
    I took care of comparing the assembly output of compiling
    target-i386/cpu.c before and after applying this change, to make sure
    not a single bit was changed on cpu_x86_cpuid() before and after
    applying this patch (unfortunately I had to manually check existing
    differences, because of __LINE__ expansions on
    object_class_dynamic_cast_assert() calls).
    
    This even keeps the code bug-compatible with the previous version: today
    the cache information returned on AMD cache information leaves (CPUID
    0x80000005 & 0x80000006) do not match the information returned on CPUID
    leaves 2 and 4. The L2 cache information on CPUID leaf 2 also doesn't
    match the information on CPUID leaf 2. The new constants should make it
    easier to eventually fix those inconsistencies. All inconsistencies I
    have found are documented in code comments.
    
    Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
    Reviewed-by: default avatarliguang <lig.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
Loading