Commit 2df2b52c authored by Peter Zijlstra's avatar Peter Zijlstra
Browse files

KVM: x86: Introduce EM_ASM_2R

parent b26deb0c
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -326,6 +326,15 @@ static int em_##op(struct x86_emulate_ctxt *ctxt) \
	ON64(case 8: __EM_ASM_2(op##q, rax, rdx); break;) \
	EM_ASM_END

/* 2-operand, reversed */
#define EM_ASM_2R(op, name) \
	EM_ASM_START(name) \
	case 1: __EM_ASM_2(op##b, dl, al); break; \
	case 2: __EM_ASM_2(op##w, dx, ax); break; \
	case 4: __EM_ASM_2(op##l, edx, eax); break; \
	ON64(case 8: __EM_ASM_2(op##q, rdx, rax); break;) \
	EM_ASM_END

/*
 * fastop functions have a special calling convention:
 *
@@ -1077,8 +1086,7 @@ FASTOP2W(bts);
FASTOP2W(btr);
FASTOP2W(btc);


FASTOP2R(cmp, cmp_r);
EM_ASM_2R(cmp, cmp_r);

static int em_bsf_c(struct x86_emulate_ctxt *ctxt)
{
@@ -4336,12 +4344,12 @@ static const struct opcode opcode_table[256] = {
	I2bv(DstAcc | SrcMem | Mov | MemAbs, em_mov),
	I2bv(DstMem | SrcAcc | Mov | MemAbs | PageTable, em_mov),
	I2bv(SrcSI | DstDI | Mov | String | TwoMemOp, em_mov),
	F2bv(SrcSI | DstDI | String | NoWrite | TwoMemOp, em_cmp_r),
	I2bv(SrcSI | DstDI | String | NoWrite | TwoMemOp, em_cmp_r),
	/* 0xA8 - 0xAF */
	I2bv(DstAcc | SrcImm | NoWrite, em_test),
	I2bv(SrcAcc | DstDI | Mov | String, em_mov),
	I2bv(SrcSI | DstAcc | Mov | String, em_mov),
	F2bv(SrcAcc | DstDI | String | NoWrite, em_cmp_r),
	I2bv(SrcAcc | DstDI | String | NoWrite, em_cmp_r),
	/* 0xB0 - 0xB7 */
	X8(I(ByteOp | DstReg | SrcImm | Mov, em_mov)),
	/* 0xB8 - 0xBF */