aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorAvi Kivity <avi.kivity@gmail.com>2013-01-04 09:18:53 -0500
committerMarcelo Tosatti <mtosatti@redhat.com>2013-01-09 14:39:28 -0500
commitf7857f35dbf8e7ca36ebff3f43888fd3fb0f0e70 (patch)
tree4da1172c30be9e451cb312cc0327d5f95a38bb05 /arch/x86
parent45a1467d7edff741d97a8be28342440ee65aa03c (diff)
KVM: x86 emulator: add macros for defining 2-operand fastop emulation
Acked-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Avi Kivity <avi.kivity@gmail.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kvm/emulate.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 09dbdc5a99e1..3b5d4dd6750a 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -465,6 +465,17 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt)
465 ON64(FOP1E(op##q, rax)) \ 465 ON64(FOP1E(op##q, rax)) \
466 FOP_END 466 FOP_END
467 467
468#define FOP2E(op, dst, src) \
469 FOP_ALIGN #op " %" #src ", %" #dst " \n\t" FOP_RET
470
471#define FASTOP2(op) \
472 FOP_START(op) \
473 FOP2E(op##b, al, bl) \
474 FOP2E(op##w, ax, bx) \
475 FOP2E(op##l, eax, ebx) \
476 ON64(FOP2E(op##q, rax, rbx)) \
477 FOP_END
478
468#define __emulate_1op_rax_rdx(ctxt, _op, _suffix, _ex) \ 479#define __emulate_1op_rax_rdx(ctxt, _op, _suffix, _ex) \
469 do { \ 480 do { \
470 unsigned long _tmp; \ 481 unsigned long _tmp; \
@@ -3696,6 +3707,7 @@ static int check_perm_out(struct x86_emulate_ctxt *ctxt)
3696#define D2bv(_f) D((_f) | ByteOp), D(_f) 3707#define D2bv(_f) D((_f) | ByteOp), D(_f)
3697#define D2bvIP(_f, _i, _p) DIP((_f) | ByteOp, _i, _p), DIP(_f, _i, _p) 3708#define D2bvIP(_f, _i, _p) DIP((_f) | ByteOp, _i, _p), DIP(_f, _i, _p)
3698#define I2bv(_f, _e) I((_f) | ByteOp, _e), I(_f, _e) 3709#define I2bv(_f, _e) I((_f) | ByteOp, _e), I(_f, _e)
3710#define F2bv(_f, _e) F((_f) | ByteOp, _e), F(_f, _e)
3699#define I2bvIP(_f, _e, _i, _p) \ 3711#define I2bvIP(_f, _e, _i, _p) \
3700 IIP((_f) | ByteOp, _e, _i, _p), IIP(_f, _e, _i, _p) 3712 IIP((_f) | ByteOp, _e, _i, _p), IIP(_f, _e, _i, _p)
3701 3713