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 /arch/x86_64/kernel/head.S | |
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 'arch/x86_64/kernel/head.S')
-rw-r--r-- | arch/x86_64/kernel/head.S | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/x86_64/kernel/head.S b/arch/x86_64/kernel/head.S index 9bd2e7a4b81e..8d765aa77a26 100644 --- a/arch/x86_64/kernel/head.S +++ b/arch/x86_64/kernel/head.S | |||
@@ -248,23 +248,23 @@ ENTRY(_stext) | |||
248 | */ | 248 | */ |
249 | .org 0x1000 | 249 | .org 0x1000 |
250 | ENTRY(init_level4_pgt) | 250 | ENTRY(init_level4_pgt) |
251 | .quad 0x0000000000102007 /* -> level3_ident_pgt */ | 251 | .quad 0x0000000000002007 + __PHYSICAL_START /* -> level3_ident_pgt */ |
252 | .fill 255,8,0 | 252 | .fill 255,8,0 |
253 | .quad 0x000000000010a007 | 253 | .quad 0x000000000000a007 + __PHYSICAL_START |
254 | .fill 254,8,0 | 254 | .fill 254,8,0 |
255 | /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ | 255 | /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ |
256 | .quad 0x0000000000103007 /* -> level3_kernel_pgt */ | 256 | .quad 0x0000000000003007 + __PHYSICAL_START /* -> level3_kernel_pgt */ |
257 | 257 | ||
258 | .org 0x2000 | 258 | .org 0x2000 |
259 | ENTRY(level3_ident_pgt) | 259 | ENTRY(level3_ident_pgt) |
260 | .quad 0x0000000000104007 | 260 | .quad 0x0000000000004007 + __PHYSICAL_START |
261 | .fill 511,8,0 | 261 | .fill 511,8,0 |
262 | 262 | ||
263 | .org 0x3000 | 263 | .org 0x3000 |
264 | ENTRY(level3_kernel_pgt) | 264 | ENTRY(level3_kernel_pgt) |
265 | .fill 510,8,0 | 265 | .fill 510,8,0 |
266 | /* (2^48-(2*1024*1024*1024)-((2^39)*511))/(2^30) = 510 */ | 266 | /* (2^48-(2*1024*1024*1024)-((2^39)*511))/(2^30) = 510 */ |
267 | .quad 0x0000000000105007 /* -> level2_kernel_pgt */ | 267 | .quad 0x0000000000005007 + __PHYSICAL_START /* -> level2_kernel_pgt */ |
268 | .fill 1,8,0 | 268 | .fill 1,8,0 |
269 | 269 | ||
270 | .org 0x4000 | 270 | .org 0x4000 |
@@ -337,17 +337,17 @@ ENTRY(empty_bad_pmd_table) | |||
337 | 337 | ||
338 | .org 0xa000 | 338 | .org 0xa000 |
339 | ENTRY(level3_physmem_pgt) | 339 | ENTRY(level3_physmem_pgt) |
340 | .quad 0x0000000000105007 /* -> level2_kernel_pgt (so that __va works even before pagetable_init) */ | 340 | .quad 0x0000000000005007 + __PHYSICAL_START /* -> level2_kernel_pgt (so that __va works even before pagetable_init) */ |
341 | 341 | ||
342 | .org 0xb000 | 342 | .org 0xb000 |
343 | #ifdef CONFIG_ACPI_SLEEP | 343 | #ifdef CONFIG_ACPI_SLEEP |
344 | ENTRY(wakeup_level4_pgt) | 344 | ENTRY(wakeup_level4_pgt) |
345 | .quad 0x0000000000102007 /* -> level3_ident_pgt */ | 345 | .quad 0x0000000000002007 + __PHYSICAL_START /* -> level3_ident_pgt */ |
346 | .fill 255,8,0 | 346 | .fill 255,8,0 |
347 | .quad 0x000000000010a007 | 347 | .quad 0x000000000000a007 + __PHYSICAL_START |
348 | .fill 254,8,0 | 348 | .fill 254,8,0 |
349 | /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ | 349 | /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ |
350 | .quad 0x0000000000103007 /* -> level3_kernel_pgt */ | 350 | .quad 0x0000000000003007 + __PHYSICAL_START /* -> level3_kernel_pgt */ |
351 | #endif | 351 | #endif |
352 | 352 | ||
353 | .data | 353 | .data |