diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2006-12-06 20:14:04 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:04 -0500 |
commit | 968de4f02621db35b8ae5239c8cfc6664fb872d8 (patch) | |
tree | 9388da7f18f9511e1bbfeaf934cba8dbc696e9f4 /arch/i386/Kconfig | |
parent | fd593d12770d4a0d1ff095d44b96436c18479ee8 (diff) |
[PATCH] i386: Relocatable kernel support
This patch modifies the i386 kernel so that if CONFIG_RELOCATABLE is
selected it will be able to be loaded at any 4K aligned address below
1G. The technique used is to compile the decompressor with -fPIC and
modify it so the decompressor is fully relocatable. For the main
kernel relocations are generated. Resulting in a kernel that is relocatable
with no runtime overhead and no need to modify the source code.
A reserved 32bit word in the parameters has been assigned
to serve as a stack so we figure out where are running.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/i386/Kconfig')
-rw-r--r-- | arch/i386/Kconfig | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index 8ff1c6fb5aa1..d588ca874bb4 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig | |||
@@ -773,6 +773,18 @@ config CRASH_DUMP | |||
773 | PHYSICAL_START. | 773 | PHYSICAL_START. |
774 | For more details see Documentation/kdump/kdump.txt | 774 | For more details see Documentation/kdump/kdump.txt |
775 | 775 | ||
776 | config RELOCATABLE | ||
777 | bool "Build a relocatable kernel" | ||
778 | help | ||
779 | This build a kernel image that retains relocation information | ||
780 | so it can be loaded someplace besides the default 1MB. | ||
781 | The relocations tend to the kernel binary about 10% larger, | ||
782 | but are discarded at runtime. | ||
783 | |||
784 | One use is for the kexec on panic case where the recovery kernel | ||
785 | must live at a different physical address than the primary | ||
786 | kernel. | ||
787 | |||
776 | config PHYSICAL_START | 788 | config PHYSICAL_START |
777 | hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP) | 789 | hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP) |
778 | 790 | ||