diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2005-06-25 17:57:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-25 19:24:48 -0400 |
commit | d0537508a9921efced238b20967e50e519ac34af (patch) | |
tree | 80f2743e9299da07c07625af45807e16a7d7f85a /include | |
parent | 8a9190853c34289d9181acd9c620c76143bf88ca (diff) |
[PATCH] kexec: x86_64: add CONFIG_PHYSICAL_START
For one kernel to report a crash another kernel has created we need
to have 2 kernels loaded simultaneously in memory. To accomplish this
the two kernels need to built to run at different physical addresses.
This patch adds the CONFIG_PHYSICAL_START option to the x86_64 kernel
so we can do just that. You need to know what you are doing and
the ramifications are before changing this value, and most users
won't care so I have made it depend on CONFIG_EMBEDDED
bzImage kernels will work and run at a different address when compiled
with this option but they will still load at 1MB. If you need a kernel
loaded at a different address as well you need to boot a vmlinux.
Signed-off-by: Eric Biederman <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-x86_64/page.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/include/asm-x86_64/page.h b/include/asm-x86_64/page.h index 60130f4ca986..431318764af6 100644 --- a/include/asm-x86_64/page.h +++ b/include/asm-x86_64/page.h | |||
@@ -64,12 +64,14 @@ typedef struct { unsigned long pgprot; } pgprot_t; | |||
64 | #define __pgd(x) ((pgd_t) { (x) } ) | 64 | #define __pgd(x) ((pgd_t) { (x) } ) |
65 | #define __pgprot(x) ((pgprot_t) { (x) } ) | 65 | #define __pgprot(x) ((pgprot_t) { (x) } ) |
66 | 66 | ||
67 | #define __START_KERNEL 0xffffffff80100000UL | 67 | #define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START) |
68 | #define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START) | ||
68 | #define __START_KERNEL_map 0xffffffff80000000UL | 69 | #define __START_KERNEL_map 0xffffffff80000000UL |
69 | #define __PAGE_OFFSET 0xffff810000000000UL | 70 | #define __PAGE_OFFSET 0xffff810000000000UL |
70 | 71 | ||
71 | #else | 72 | #else |
72 | #define __START_KERNEL 0xffffffff80100000 | 73 | #define __PHYSICAL_START CONFIG_PHYSICAL_START |
74 | #define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START) | ||
73 | #define __START_KERNEL_map 0xffffffff80000000 | 75 | #define __START_KERNEL_map 0xffffffff80000000 |
74 | #define __PAGE_OFFSET 0xffff810000000000 | 76 | #define __PAGE_OFFSET 0xffff810000000000 |
75 | #endif /* !__ASSEMBLY__ */ | 77 | #endif /* !__ASSEMBLY__ */ |