diff options
author | Vivek Goyal <vgoyal@in.ibm.com> | 2006-12-06 20:14:04 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:04 -0500 |
commit | be274eeaf20b4c7155242645d5e2c48b023e609b (patch) | |
tree | 2c56b03d80ad1e9e376b286ddfa28fffe0606901 /arch/i386/boot | |
parent | e69f202d0a1419219198566e1c22218a5c71a9a6 (diff) |
[PATCH] i386: extend bzImage protocol for relocatable protected mode kernel
Extend bzImage protocol to enable bootloaders to load a completely relocatable
bzImage. Now protected mode component of kernel is also relocatable and a
boot-loader can load the protected mode component at a differnt physical
address than 1MB. (If kernel was built with CONFIG_RELOCATABLE)
Kexec can make use of it to load this kernel at a different physical address
to capture kernel crash dumps.
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Diffstat (limited to 'arch/i386/boot')
-rw-r--r-- | arch/i386/boot/setup.S | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/arch/i386/boot/setup.S b/arch/i386/boot/setup.S index 9aa8b0518184..06edf1c66242 100644 --- a/arch/i386/boot/setup.S +++ b/arch/i386/boot/setup.S | |||
@@ -81,7 +81,7 @@ start: | |||
81 | # This is the setup header, and it must start at %cs:2 (old 0x9020:2) | 81 | # This is the setup header, and it must start at %cs:2 (old 0x9020:2) |
82 | 82 | ||
83 | .ascii "HdrS" # header signature | 83 | .ascii "HdrS" # header signature |
84 | .word 0x0204 # header version number (>= 0x0105) | 84 | .word 0x0205 # header version number (>= 0x0105) |
85 | # or else old loadlin-1.5 will fail) | 85 | # or else old loadlin-1.5 will fail) |
86 | realmode_swtch: .word 0, 0 # default_switch, SETUPSEG | 86 | realmode_swtch: .word 0, 0 # default_switch, SETUPSEG |
87 | start_sys_seg: .word SYSSEG | 87 | start_sys_seg: .word SYSSEG |
@@ -160,6 +160,17 @@ ramdisk_max: .long (-__PAGE_OFFSET-(512 << 20)-1) & 0x7fffffff | |||
160 | # The highest safe address for | 160 | # The highest safe address for |
161 | # the contents of an initrd | 161 | # the contents of an initrd |
162 | 162 | ||
163 | kernel_alignment: .long CONFIG_PHYSICAL_ALIGN #physical addr alignment | ||
164 | #required for protected mode | ||
165 | #kernel | ||
166 | #ifdef CONFIG_RELOCATABLE | ||
167 | relocatable_kernel: .byte 1 | ||
168 | #else | ||
169 | relocatable_kernel: .byte 0 | ||
170 | #endif | ||
171 | pad2: .byte 0 | ||
172 | pad3: .word 0 | ||
173 | |||
163 | trampoline: call start_of_setup | 174 | trampoline: call start_of_setup |
164 | .align 16 | 175 | .align 16 |
165 | # The offset at this point is 0x240 | 176 | # The offset at this point is 0x240 |