forked from Minki/linux
KVM: x86 emulator: move invlpg emulation into a function
It's going to get more complicated soon. Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
3ca3ac4dae
commit
38503911b3
@ -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 @@ twobyte_insn:
|
|||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user