VME is for CPU_LEVEL>=5 only

This commit is contained in:
Stanislav Shwartsman 2012-07-08 18:16:25 +00:00
parent 5994d0e100
commit 58dde88887

View File

@ -505,12 +505,15 @@ void BX_CPU_C::prefetch(void)
else
#endif
{
#if BX_CPU_LEVEL >= 5
if (USER_PL && BX_CPU_THIS_PTR get_VIP() && BX_CPU_THIS_PTR get_VIF()) {
if (BX_CPU_THIS_PTR cr4.get_PVI() | (v8086_mode() && BX_CPU_THIS_PTR cr4.get_VME())) {
BX_ERROR(("prefetch: inconsistent VME state"));
exception(BX_GP_EXCEPTION, 0);
}
}
#endif
BX_CLEAR_64BIT_HIGH(BX_64BIT_REG_RIP); /* avoid 32-bit EIP wrap */
laddr = get_laddr32(BX_SEG_REG_CS, EIP);