diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-01-10 22:53:43 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-01-10 22:53:43 +0000 |
commit | 0afa7733ef403ce05fb78603ecd46b110830a77f (patch) | |
tree | fad7fad5ba7999e2d36d38db5ca2c42d9035775a | |
parent | bf8259852fb980cc88d57cae1c1ac93f387eaa1c (diff) | |
download | xen-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.c | 2 |
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) */ { |