Commit fb2c2641 authored by Avi Kivity's avatar Avi Kivity

KVM: x86 emulator: Use a register for ____emulate_2op() destination

Most x86 two operand instructions allow the destination to be a memory operand,
but IMUL (for example) requires that the destination be a register.  Change
____emulate_2op() to take a register for both source and destination so we
can invoke IMUL.
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent b3b3d25a
...@@ -200,7 +200,7 @@ struct group_dual { ...@@ -200,7 +200,7 @@ struct group_dual {
_PRE_EFLAGS("0", "4", "2") \ _PRE_EFLAGS("0", "4", "2") \
_op _suffix " %"_x"3,%1; " \ _op _suffix " %"_x"3,%1; " \
_POST_EFLAGS("0", "4", "2") \ _POST_EFLAGS("0", "4", "2") \
: "=m" (_eflags), "=m" (*(_dsttype*)&(_dst).val),\ : "=m" (_eflags), "+q" (*(_dsttype*)&(_dst).val),\
"=&r" (_tmp) \ "=&r" (_tmp) \
: _y ((_src).val), "i" (EFLAGS_MASK)); \ : _y ((_src).val), "i" (EFLAGS_MASK)); \
} while (0) } while (0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment