lguest: make emulate_insn receive a vcpu struct.
authorGlauber de Oliveira Costa <gcosta@redhat.com>
Mon, 7 Jan 2008 13:05:31 +0000 (11:05 -0200)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 30 Jan 2008 11:50:10 +0000 (22:50 +1100)
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: Glauber de Oliveira Costa <gcosta@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/lguest/x86/core.c

index d35f629..ae46c6b 100644 (file)
@@ -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
  * 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. */
-static int emulate_insn(struct lguest *lg)
+static int emulate_insn(struct lg_cpu *cpu)
 {
+       struct lguest *lg = cpu->lg;
        u8 insn;
        unsigned int insnlen = 0, in = 0, shift = 0;
        /* 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
                 * back into the Guest after we've done it. */
                if (lg->regs->errcode == 0) {
-                       if (emulate_insn(lg))
+                       if (emulate_insn(cpu))
                                return;
                }
                break;