Modified my fix to JMP_Jq to clear all the upper bits,

63..16 when a 16-bit operand size JMP is executed.  Previous
  fix cleared only 63..32.  I since realized, this is the case
  which does parallel the 32-bit semantics.
This commit is contained in:
Kevin Lawton 2002-09-26 22:34:06 +00:00
parent 6d74a334d6
commit 109111202c

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: ctrl_xfer64.cc,v 1.12 2002-09-26 21:32:26 kevinlawton Exp $
// $Id: ctrl_xfer64.cc,v 1.13 2002-09-26 22:34:06 kevinlawton Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -293,6 +293,7 @@ BX_CPU_C::JMP_Jq(bxInstruction_c *i)
// For 16-bit opSize, upper bits of RIP are cleared, as in
// 32-bit counterpart JMP_Jd.
BX_CPU_THIS_PTR dword.rip_upper = 0;
BX_CPU_THIS_PTR dword.eip &= 0x0000ffff;
}
BX_INSTR_UCNEAR_BRANCH(BX_INSTR_IS_JMP, new_RIP);
}