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 | e69f202d0a1419219198566e1c22218a5c71a9a6 (patch) | |
tree | 16bb59505500797e1ea7e09ee9c3b495ce65b76a /arch/i386/kernel/vmlinux.lds.S | |
parent | 6a044b3a0a1829ef19bb29548ffe553f48e8d80c (diff) |
[PATCH] i386: Implement CONFIG_PHYSICAL_ALIGN
o Now CONFIG_PHYSICAL_START is being replaced with CONFIG_PHYSICAL_ALIGN.
Hardcoding the kernel physical start value creates a problem in relocatable
kernel context due to boot loader limitations. For ex, if somebody
compiles a relocatable kernel to be run from address 4MB, but this kernel
will run from location 1MB as grub loads the kernel at physical address
1MB. Kernel thinks that I am a relocatable kernel and I should run from
the address I have been loaded at. So somebody wanting to run kernel
from 4MB alignment location (for improved performance regions) can't do
that.
o Hence, Eric proposed that probably CONFIG_PHYSICAL_ALIGN will make
more sense in relocatable kernel context. At run time kernel will move
itself to a physical addr location which meets user specified alignment
restrictions.
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/i386/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/i386/kernel/vmlinux.lds.S | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/i386/kernel/vmlinux.lds.S b/arch/i386/kernel/vmlinux.lds.S index f8d61ec4c8cb..6860f20aa579 100644 --- a/arch/i386/kernel/vmlinux.lds.S +++ b/arch/i386/kernel/vmlinux.lds.S | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/thread_info.h> | 14 | #include <asm/thread_info.h> |
15 | #include <asm/page.h> | 15 | #include <asm/page.h> |
16 | #include <asm/cache.h> | 16 | #include <asm/cache.h> |
17 | #include <asm/boot.h> | ||
17 | 18 | ||
18 | OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") | 19 | OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") |
19 | OUTPUT_ARCH(i386) | 20 | OUTPUT_ARCH(i386) |
@@ -27,7 +28,7 @@ PHDRS { | |||
27 | } | 28 | } |
28 | SECTIONS | 29 | SECTIONS |
29 | { | 30 | { |
30 | . = LOAD_OFFSET + CONFIG_PHYSICAL_START; | 31 | . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR; |
31 | phys_startup_32 = startup_32 - LOAD_OFFSET; | 32 | phys_startup_32 = startup_32 - LOAD_OFFSET; |
32 | /* read-only */ | 33 | /* read-only */ |
33 | .text : AT(ADDR(.text) - LOAD_OFFSET) { | 34 | .text : AT(ADDR(.text) - LOAD_OFFSET) { |