extract calculation of MSR_IA32_XSS supported bits to a function
This commit is contained in:
parent
45a25a2b67
commit
b69f2b052a
@ -4894,6 +4894,7 @@ public: // for now...
|
||||
#if BX_CPU_LEVEL >= 6
|
||||
BX_SMF void xsave_xrestor_init(void);
|
||||
BX_SMF Bit32u get_xcr0_allow_mask(void);
|
||||
BX_SMF Bit32u get_ia32_xss_allow_mask(void);
|
||||
BX_SMF Bit32u get_xinuse_vector(Bit32u requested_feature_bitmap);
|
||||
|
||||
BX_SMF bx_bool xsave_x87_state_xinuse(void);
|
||||
|
@ -1779,4 +1779,13 @@ Bit32u BX_CPU_C::get_xcr0_allow_mask(void)
|
||||
return allowMask;
|
||||
}
|
||||
|
||||
Bit32u BX_CPU_C::get_ia32_xss_allow_mask(void)
|
||||
{
|
||||
Bit64u ia32_xss_support_mask = 0;
|
||||
#if BX_SUPPORT_CET
|
||||
ia32_xss_support_mask |= BX_XCR0_CET_U_MASK | BX_XCR0_CET_S_MASK;
|
||||
#endif
|
||||
return ia32_xss_support_mask;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -767,11 +767,8 @@ bx_bool BX_CPP_AttrRegparmN(2) BX_CPU_C::wrmsr(Bit32u index, Bit64u val_64)
|
||||
BX_ERROR(("WRMSR BX_MSR_XSS: XSAVES not enabled in the cpu model"));
|
||||
return handle_unknown_wrmsr(index, val_64);
|
||||
}
|
||||
Bit64u ia32_xss_support_mask = 0;
|
||||
#if BX_SUPPORT_CET
|
||||
ia32_xss_support_mask = BX_XCR0_CET_U_MASK | BX_XCR0_CET_S_MASK;
|
||||
#endif
|
||||
if (val_64 & ~ia32_xss_support_mask) {
|
||||
Bit32u xss_suport_mask = get_ia32_xss_allow_mask();
|
||||
if (val_64 & ~Bit64u(xss_suport_mask)) {
|
||||
BX_ERROR(("WRMSR: attempt to set reserved/not supported bit in BX_MSR_XSS"));
|
||||
return 0;
|
||||
}
|
||||
@ -1023,7 +1020,7 @@ bx_bool BX_CPP_AttrRegparmN(2) BX_CPU_C::wrmsr(Bit32u index, Bit64u val_64)
|
||||
|
||||
case BX_MSR_TSC_AUX:
|
||||
if (! is_cpu_extension_supported(BX_ISA_RDTSCP)) {
|
||||
BX_ERROR(("WRMSR MSR_TSC_AUX: RTDSCP feature not enabled in the cpu model"));
|
||||
BX_ERROR(("WRMSR MSR_TSC_AUX: RDTSCP feature not enabled in the cpu model"));
|
||||
return handle_unknown_wrmsr(index, val_64);
|
||||
}
|
||||
BX_CPU_THIS_PTR msr.tsc_aux = val32_lo;
|
||||
|
Loading…
x
Reference in New Issue
Block a user