diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-22 11:03:36 +1000 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-23 15:49:54 +1000 |
commit | 47436aa4ad054c1c7c8231618e86ebd9305308dc (patch) | |
tree | a9ba6e0521f9116442144a86e781a3164ec86094 /include/linux | |
parent | c18acd73ffc209def08003a1927473096f66c5ad (diff) | |
download | op-kernel-dev-47436aa4ad054c1c7c8231618e86ebd9305308dc.zip op-kernel-dev-47436aa4ad054c1c7c8231618e86ebd9305308dc.tar.gz |
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 0830522..8beb291 100644 --- a/include/linux/lguest.h +++ b/include/linux/lguest.h @@ -44,11 +44,14 @@ struct lguest_data unsigned long reserve_mem; /* KHz for the TSC clock. */ u32 tsc_khz; + /* Page where the top-level pagetable is */ + unsigned long pgdir; /* Fields initialized by the Guest at boot: */ /* Instruction range to suppress interrupts even if enabled */ unsigned long noirq_start, noirq_end; - + /* Address above which page tables are all identical. */ + unsigned long kernel_address; /* The vector to try to use for system calls (0x40 or 0x80). */ unsigned int syscall_vec; }; |