diff options
author | Matias Zabaljauregui <zabaljauregui@gmail.com> | 2009-06-13 00:27:07 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2009-06-12 08:57:08 -0400 |
commit | acdd0b6292b282c4511897ac2691a47befbf1c6a (patch) | |
tree | 1bfcfc32b11d35e99fec5bbf52b19d6ee038f25e /drivers/lguest/hypercalls.c | |
parent | cefcad1773197523e11e18b669f245e6a8d32058 (diff) |
lguest: PAE support
This version requires that host and guest have the same PAE status.
NX cap is not offered to the guest, yet.
Signed-off-by: Matias Zabaljauregui <zabaljauregui@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/lguest/hypercalls.c')
-rw-r--r-- | drivers/lguest/hypercalls.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/lguest/hypercalls.c b/drivers/lguest/hypercalls.c index 51149ca14617..c29ffa19cb74 100644 --- a/drivers/lguest/hypercalls.c +++ b/drivers/lguest/hypercalls.c | |||
@@ -77,11 +77,21 @@ static void do_hcall(struct lg_cpu *cpu, struct hcall_args *args) | |||
77 | guest_set_stack(cpu, args->arg1, args->arg2, args->arg3); | 77 | guest_set_stack(cpu, args->arg1, args->arg2, args->arg3); |
78 | break; | 78 | break; |
79 | case LHCALL_SET_PTE: | 79 | case LHCALL_SET_PTE: |
80 | #ifdef CONFIG_X86_PAE | ||
81 | guest_set_pte(cpu, args->arg1, args->arg2, | ||
82 | __pte(args->arg3 | (u64)args->arg4 << 32)); | ||
83 | #else | ||
80 | guest_set_pte(cpu, args->arg1, args->arg2, __pte(args->arg3)); | 84 | guest_set_pte(cpu, args->arg1, args->arg2, __pte(args->arg3)); |
85 | #endif | ||
81 | break; | 86 | break; |
82 | case LHCALL_SET_PGD: | 87 | case LHCALL_SET_PGD: |
83 | guest_set_pgd(cpu->lg, args->arg1, args->arg2); | 88 | guest_set_pgd(cpu->lg, args->arg1, args->arg2); |
84 | break; | 89 | break; |
90 | #ifdef CONFIG_X86_PAE | ||
91 | case LHCALL_SET_PMD: | ||
92 | guest_set_pmd(cpu->lg, args->arg1, args->arg2); | ||
93 | break; | ||
94 | #endif | ||
85 | case LHCALL_SET_CLOCKEVENT: | 95 | case LHCALL_SET_CLOCKEVENT: |
86 | guest_set_clockevent(cpu, args->arg1); | 96 | guest_set_clockevent(cpu, args->arg1); |
87 | break; | 97 | break; |