diff options
Diffstat (limited to 'drivers/lguest/x86')
-rw-r--r-- | drivers/lguest/x86/core.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c index 65f2e380947..8c723555ffb 100644 --- a/drivers/lguest/x86/core.c +++ b/drivers/lguest/x86/core.c | |||
@@ -145,7 +145,7 @@ static void run_guest_once(struct lg_cpu *cpu, struct lguest_pages *pages) | |||
145 | * 0-th argument above, ie "a"). %ebx contains the | 145 | * 0-th argument above, ie "a"). %ebx contains the |
146 | * physical address of the Guest's top-level page | 146 | * physical address of the Guest's top-level page |
147 | * directory. */ | 147 | * directory. */ |
148 | : "0"(pages), "1"(__pa(lg->pgdirs[lg->pgdidx].pgdir)) | 148 | : "0"(pages), "1"(__pa(lg->pgdirs[cpu->cpu_pgd].pgdir)) |
149 | /* We tell gcc that all these registers could change, | 149 | /* We tell gcc that all these registers could change, |
150 | * which means we don't have to save and restore them in | 150 | * which means we don't have to save and restore them in |
151 | * the Switcher. */ | 151 | * the Switcher. */ |
@@ -223,7 +223,7 @@ static int emulate_insn(struct lg_cpu *cpu) | |||
223 | unsigned int insnlen = 0, in = 0, shift = 0; | 223 | unsigned int insnlen = 0, in = 0, shift = 0; |
224 | /* The eip contains the *virtual* address of the Guest's instruction: | 224 | /* The eip contains the *virtual* address of the Guest's instruction: |
225 | * guest_pa just subtracts the Guest's page_offset. */ | 225 | * guest_pa just subtracts the Guest's page_offset. */ |
226 | unsigned long physaddr = guest_pa(lg, cpu->regs->eip); | 226 | unsigned long physaddr = guest_pa(cpu, cpu->regs->eip); |
227 | 227 | ||
228 | /* This must be the Guest kernel trying to do something, not userspace! | 228 | /* This must be the Guest kernel trying to do something, not userspace! |
229 | * The bottom two bits of the CS segment register are the privilege | 229 | * The bottom two bits of the CS segment register are the privilege |
@@ -305,7 +305,8 @@ void lguest_arch_handle_trap(struct lg_cpu *cpu) | |||
305 | * | 305 | * |
306 | * The errcode tells whether this was a read or a write, and | 306 | * The errcode tells whether this was a read or a write, and |
307 | * whether kernel or userspace code. */ | 307 | * whether kernel or userspace code. */ |
308 | if (demand_page(lg,cpu->arch.last_pagefault,cpu->regs->errcode)) | 308 | if (demand_page(cpu, cpu->arch.last_pagefault, |
309 | cpu->regs->errcode)) | ||
309 | return; | 310 | return; |
310 | 311 | ||
311 | /* OK, it's really not there (or not OK): the Guest needs to | 312 | /* OK, it's really not there (or not OK): the Guest needs to |