bool_t is_var_mtrr_overlapped(const struct mtrr_state *m)
{
unsigned int seg, i;
- unsigned int num_var_ranges = (uint8_t)m->mtrr_cap;
+ unsigned int num_var_ranges = MASK_EXTR(m->mtrr_cap, MTRRcap_VCNT);
for ( i = 0; i < num_var_ranges; i++ )
{
uint8_t overlap_mtrr = 0;
uint8_t overlap_mtrr_pos = 0;
uint64_t mask = -(uint64_t)PAGE_SIZE << order;
- unsigned int seg, num_var_ranges = m->mtrr_cap & 0xff;
+ unsigned int seg, num_var_ranges = MASK_EXTR(m->mtrr_cap, MTRRcap_VCNT);
if ( unlikely(!(m->enabled & 0x2)) )
return MTRR_TYPE_UNCACHABLE;
if ( md->enabled & 2 )
{
- unsigned int num_var_ranges = (uint8_t)md->mtrr_cap;
+ unsigned int num_var_ranges = MASK_EXTR(md->mtrr_cap, MTRRcap_VCNT);
/* Test default type MSR. */
if ( md->def_type != ms->def_type )
return true;
/* Test variable ranges. */
- if ( num_var_ranges != (uint8_t)ms->mtrr_cap ||
+ if ( num_var_ranges != MASK_EXTR(ms->mtrr_cap, MTRRcap_VCNT) ||
memcmp(md->var_ranges, ms->var_ranges,
num_var_ranges * sizeof(*md->var_ranges)) )
return true;
#define ATM_LNC_C6_AUTO_DEMOTE (1UL << 25)
#define MSR_MTRRcap 0x000000fe
+#define MTRRcap_VCNT 0x000000ff
+
#define MSR_IA32_BBL_CR_CTL 0x00000119
#define MSR_IA32_SYSENTER_CS 0x00000174