10 #include <asm/processor.h>
16 #define INVALID_TYPE 0
20 #define LEAFB_SUBTYPE(ecx) (((ecx) >> 8) & 0xff)
21 #define BITS_SHIFT_NEXT_LEVEL(eax) ((eax) & 0x1f)
22 #define LEVEL_MAX_SIBLINGS(ebx) ((ebx) & 0xffff)
32 unsigned int eax,
ebx,
ecx, edx, sub_index;
33 unsigned int ht_mask_width, core_plus_mask_width;
34 unsigned int core_select_mask, core_level_siblings;
40 cpuid_count(0
xb,
SMT_LEVEL, &eax, &ebx, &ecx, &edx);
63 cpuid_count(0
xb, sub_index, &eax, &ebx, &ecx, &edx);
77 core_select_mask = (~(-1 << core_plus_mask_width)) >> ht_mask_width;