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/asm-x86 | |
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/asm-x86')
-rw-r--r-- | include/asm-x86/lguest_hcall.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/include/asm-x86/lguest_hcall.h b/include/asm-x86/lguest_hcall.h index 8f2a1edc4fe2..0c553ef36240 100644 --- a/include/asm-x86/lguest_hcall.h +++ b/include/asm-x86/lguest_hcall.h | |||
@@ -2,8 +2,6 @@ | |||
2 | #ifndef _X86_LGUEST_HCALL_H | 2 | #ifndef _X86_LGUEST_HCALL_H |
3 | #define _X86_LGUEST_HCALL_H | 3 | #define _X86_LGUEST_HCALL_H |
4 | 4 | ||
5 | #include <asm/hw_irq.h> | ||
6 | |||
7 | #define LHCALL_FLUSH_ASYNC 0 | 5 | #define LHCALL_FLUSH_ASYNC 0 |
8 | #define LHCALL_LGUEST_INIT 1 | 6 | #define LHCALL_LGUEST_INIT 1 |
9 | #define LHCALL_CRASH 2 | 7 | #define LHCALL_CRASH 2 |
@@ -36,6 +34,9 @@ | |||
36 | * definition of a gentleman: "someone who is only rude intentionally". */ | 34 | * definition of a gentleman: "someone who is only rude intentionally". */ |
37 | #define LGUEST_TRAP_ENTRY 0x1F | 35 | #define LGUEST_TRAP_ENTRY 0x1F |
38 | 36 | ||
37 | #ifndef __ASSEMBLY__ | ||
38 | #include <asm/hw_irq.h> | ||
39 | |||
39 | static inline unsigned long | 40 | static inline unsigned long |
40 | hcall(unsigned long call, | 41 | hcall(unsigned long call, |
41 | unsigned long arg1, unsigned long arg2, unsigned long arg3) | 42 | unsigned long arg1, unsigned long arg2, unsigned long arg3) |
@@ -66,4 +67,6 @@ struct hcall_args | |||
66 | /* These map directly onto eax, ebx, ecx, edx in struct lguest_regs */ | 67 | /* These map directly onto eax, ebx, ecx, edx in struct lguest_regs */ |
67 | unsigned long arg0, arg2, arg3, arg1; | 68 | unsigned long arg0, arg2, arg3, arg1; |
68 | }; | 69 | }; |
70 | |||
71 | #endif /* !__ASSEMBLY__ */ | ||
69 | #endif /* _I386_LGUEST_HCALL_H */ | 72 | #endif /* _I386_LGUEST_HCALL_H */ |