diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-21 21:03:36 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-23 01:49:54 -0400 |
commit | 47436aa4ad054c1c7c8231618e86ebd9305308dc (patch) | |
tree | a9ba6e0521f9116442144a86e781a3164ec86094 /include/linux | |
parent | c18acd73ffc209def08003a1927473096f66c5ad (diff) |
Boot with virtual == physical to get closer to native Linux.
1) This allows us to get alot closer to booting bzImages.
2) It means we don't have to know page_offset.
3) The Guest needs to modify the boot pagetables to create the
PAGE_OFFSET mapping before jumping to C code.
4) guest_pa() walks the page tables rather than using page_offset.
5) We don't use page_offset to figure out whether to emulate: it was
always kinda quesationable, and won't work for instructions done
before remapping (bzImage unpacking in particular).
6) We still want the kernel address for tlb flushing: have the initial
hypercall give us that, too.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/lguest.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/include/linux/lguest.h b/include/linux/lguest.h index 083052236db9..8beb29134626 100644 --- a/include/linux/lguest.h +++ b/include/linux/lguest.h | |||
@@ -44,11 +44,14 @@ struct lguest_data | |||
44 | unsigned long reserve_mem; | 44 | unsigned long reserve_mem; |
45 | /* KHz for the TSC clock. */ | 45 | /* KHz for the TSC clock. */ |
46 | u32 tsc_khz; | 46 | u32 tsc_khz; |
47 | /* Page where the top-level pagetable is */ | ||
48 | unsigned long pgdir; | ||
47 | 49 | ||
48 | /* Fields initialized by the Guest at boot: */ | 50 | /* Fields initialized by the Guest at boot: */ |
49 | /* Instruction range to suppress interrupts even if enabled */ | 51 | /* Instruction range to suppress interrupts even if enabled */ |
50 | unsigned long noirq_start, noirq_end; | 52 | unsigned long noirq_start, noirq_end; |
51 | 53 | /* Address above which page tables are all identical. */ | |
54 | unsigned long kernel_address; | ||
52 | /* The vector to try to use for system calls (0x40 or 0x80). */ | 55 | /* The vector to try to use for system calls (0x40 or 0x80). */ |
53 | unsigned int syscall_vec; | 56 | unsigned int syscall_vec; |
54 | }; | 57 | }; |