aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-01-10 22:53:43 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-01-10 22:53:43 +0000
commit0afa7733ef403ce05fb78603ecd46b110830a77f (patch)
treefad7fad5ba7999e2d36d38db5ca2c42d9035775a
parentbf8259852fb980cc88d57cae1c1ac93f387eaa1c (diff)
downloadxen-0afa7733ef403ce05fb78603ecd46b110830a77f.tar.gz
xen-0afa7733ef403ce05fb78603ecd46b110830a77f.tar.bz2
xen-0afa7733ef403ce05fb78603ecd46b110830a77f.zip
x86_emulate: Fix near CALL/JMP <reg,mem>. Broken by c/s 16491.
Thanks to AMD for narrowing this one down. Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
-rw-r--r--xen/arch/x86/x86_emulate.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/xen/arch/x86/x86_emulate.c b/xen/arch/x86/x86_emulate.c
index a31b5370eb..c1116017db 100644
--- a/xen/arch/x86/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate.c
@@ -1732,7 +1732,6 @@ x86_emulate(
break;
case 2: /* call (near) */
case 4: /* jmp (near) */
- dst.type = OP_NONE;
if ( (dst.bytes != 8) && mode_64bit() )
{
dst.bytes = op_bytes = 8;
@@ -1746,6 +1745,7 @@ x86_emulate(
_regs.eip = dst.val;
if ( (modrm_reg & 7) == 2 )
goto push; /* call */
+ dst.type = OP_NONE;
break;
case 3: /* call (far, absolute indirect) */
case 5: /* jmp (far, absolute indirect) */ {