This commit is contained in:
Stanislav Shwartsman 2007-11-22 21:52:55 +00:00
parent 1dbe51a2fb
commit af9a14ff3b
3 changed files with 11 additions and 17 deletions

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: flag_ctrl.cc,v 1.30 2007-11-20 23:00:44 sshwarts Exp $
// $Id: flag_ctrl.cc,v 1.31 2007-11-22 21:52:55 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2002 MandrakeSoft S.A.
@ -177,7 +177,6 @@ void BX_CPU_C::PUSHF_Fw(bxInstruction_c *i)
if ((BX_CPU_THIS_PTR get_IOPL() < 3) && (CR4_VME_ENABLED == 0)) {
BX_DEBUG(("PUSHFW: #GP(0) in v8086 (no VME) mode"));
exception(BX_GP_EXCEPTION, 0, 0);
return;
}
#if BX_SUPPORT_VME
if (CR4_VME_ENABLED && BX_CPU_THIS_PTR get_IOPL() < 3) {

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: protect_ctrl.cc,v 1.65 2007-11-18 18:24:46 sshwarts Exp $
// $Id: protect_ctrl.cc,v 1.66 2007-11-22 21:52:55 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -656,30 +656,25 @@ void BX_CPU_C::LGDT_Ms(bxInstruction_c *i)
invalidate_prefetch_q();
Bit16u limit_16;
Bit32u base_32;
#if BX_CPU_LEVEL >= 3
if (i->os32L()) {
Bit16u limit_16;
Bit32u base0_31;
read_virtual_word(i->seg(), RMAddr(i), &limit_16);
read_virtual_dword(i->seg(), RMAddr(i) + 2, &base0_31);
read_virtual_dword(i->seg(), RMAddr(i) + 2, &base_32);
BX_CPU_THIS_PTR gdtr.limit = limit_16;
BX_CPU_THIS_PTR gdtr.base = base0_31;
BX_CPU_THIS_PTR gdtr.base = base_32;
}
else
#endif
{
Bit16u limit_16, base0_15;
Bit8u base16_23;
read_virtual_word(i->seg(), RMAddr(i), &limit_16);
read_virtual_word(i->seg(), RMAddr(i) + 2, &base0_15);
read_virtual_byte(i->seg(), RMAddr(i) + 4, &base16_23);
read_virtual_dword(i->seg(), RMAddr(i) + 2, &base_32);
/* ignore high 8 bits */
BX_CPU_THIS_PTR gdtr.limit = limit_16;
BX_CPU_THIS_PTR gdtr.base = (base16_23 << 16) | base0_15;
BX_CPU_THIS_PTR gdtr.base = base_32 & 0x00ffffff; /* ignore upper 8 bits */
}
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: stack64.cc,v 1.27 2007-11-22 17:33:06 sshwarts Exp $
// $Id: stack64.cc,v 1.28 2007-11-22 21:52:55 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -64,7 +64,7 @@ void BX_CPU_C::POP_RRX(bxInstruction_c *i)
{
Bit64u rrx;
pop_64(&rrx);
BX_CPU_THIS_PTR gen_reg[i->opcodeReg()].rrx = rrx;
BX_WRITE_64BIT_REG(i->opcodeReg(), rrx);
}
void BX_CPU_C::PUSH64_FS(bxInstruction_c *i)