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

Commit a3863f68 authored by Glauber de Oliveira Costa's avatar Glauber de Oliveira Costa Committed by Rusty Russell
Browse files

lguest: make emulate_insn receive a vcpu struct.



emulate_insn() needs to know about current eip, which will be,
in the future, a per-vcpu thing. So in this patch, the function
prototype is modified to receive a vcpu struct

Signed-off-by: default avatarGlauber de Oliveira Costa <gcosta@redhat.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 0c78441c
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -218,8 +218,9 @@ void lguest_arch_run_guest(struct lg_cpu *cpu)
 * When the Guest uses one of these instructions, we get a trap (General
 * When the Guest uses one of these instructions, we get a trap (General
 * Protection Fault) and come here.  We see if it's one of those troublesome
 * Protection Fault) and come here.  We see if it's one of those troublesome
 * instructions and skip over it.  We return true if we did. */
 * instructions and skip over it.  We return true if we did. */
static int emulate_insn(struct lguest *lg)
static int emulate_insn(struct lg_cpu *cpu)
{
{
	struct lguest *lg = cpu->lg;
	u8 insn;
	u8 insn;
	unsigned int insnlen = 0, in = 0, shift = 0;
	unsigned int insnlen = 0, in = 0, shift = 0;
	/* The eip contains the *virtual* address of the Guest's instruction:
	/* The eip contains the *virtual* address of the Guest's instruction:
@@ -292,7 +293,7 @@ void lguest_arch_handle_trap(struct lg_cpu *cpu)
		 * instructions which we need to emulate.  If so, we just go
		 * instructions which we need to emulate.  If so, we just go
		 * back into the Guest after we've done it. */
		 * back into the Guest after we've done it. */
		if (lg->regs->errcode == 0) {
		if (lg->regs->errcode == 0) {
			if (emulate_insn(lg))
			if (emulate_insn(cpu))
				return;
				return;
		}
		}
		break;
		break;