aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
authorVivek Goyal <vgoyal@in.ibm.com>2006-12-06 20:14:04 -0500
committerAndi Kleen <andi@basil.nowhere.org>2006-12-06 20:14:04 -0500
commite69f202d0a1419219198566e1c22218a5c71a9a6 (patch)
tree16bb59505500797e1ea7e09ee9c3b495ce65b76a /arch/i386/kernel/vmlinux.lds.S
parent6a044b3a0a1829ef19bb29548ffe553f48e8d80c (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.S3
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
18OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") 19OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
19OUTPUT_ARCH(i386) 20OUTPUT_ARCH(i386)
@@ -27,7 +28,7 @@ PHDRS {
27} 28}
28SECTIONS 29SECTIONS
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) {