Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38503911 authored by Avi Kivity's avatar Avi Kivity
Browse files

KVM: x86 emulator: move invlpg emulation into a function



It's going to get more complicated soon.

Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 3ca3ac4d
Loading
Loading
Loading
Loading
+10 −4
Original line number Original line Diff line number Diff line
@@ -2477,6 +2477,15 @@ static int em_movdqu(struct x86_emulate_ctxt *ctxt)
	return X86EMUL_CONTINUE;
	return X86EMUL_CONTINUE;
}
}


static int em_invlpg(struct x86_emulate_ctxt *ctxt)
{
	struct decode_cache *c = &ctxt->decode;
	emulate_invlpg(ctxt->vcpu, linear(ctxt, c->src.addr.mem));
	/* Disable writeback. */
	c->dst.type = OP_NONE;
	return X86EMUL_CONTINUE;
}

static bool valid_cr(int nr)
static bool valid_cr(int nr)
{
{
	switch (nr) {
	switch (nr) {
@@ -3966,10 +3975,7 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
			rc = X86EMUL_PROPAGATE_FAULT;
			rc = X86EMUL_PROPAGATE_FAULT;
			goto done;
			goto done;
		case 7: /* invlpg*/
		case 7: /* invlpg*/
			emulate_invlpg(ctxt->vcpu,
			rc = em_invlpg(ctxt);
				       linear(ctxt, c->src.addr.mem));
			/* Disable writeback. */
			c->dst.type = OP_NONE;
			break;
			break;
		default:
		default:
			goto cannot_emulate;
			goto cannot_emulate;