|
@@ -350,9 +350,8 @@ static int apic_set_base(APICCommonState *s, uint64_t val)
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
- s->apicbase = (val & 0xfffff000) |
|
|
|
|
|
|
+ s->apicbase = (val & MSR_IA32_APICBASE_BASE) |
|
|
(s->apicbase & (MSR_IA32_APICBASE_BSP | MSR_IA32_APICBASE_ENABLE));
|
|
(s->apicbase & (MSR_IA32_APICBASE_BSP | MSR_IA32_APICBASE_ENABLE));
|
|
- /* if disabled, cannot be enabled again */
|
|
|
|
if (!(val & MSR_IA32_APICBASE_ENABLE)) {
|
|
if (!(val & MSR_IA32_APICBASE_ENABLE)) {
|
|
s->apicbase &= ~MSR_IA32_APICBASE_ENABLE;
|
|
s->apicbase &= ~MSR_IA32_APICBASE_ENABLE;
|
|
cpu_clear_apic_feature(&s->cpu->env);
|
|
cpu_clear_apic_feature(&s->cpu->env);
|