aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-01-03 12:28:33 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-01-03 12:28:33 -0500
commit9d4f13e531b4722fe40cc8e28c02a495bdd49267 (patch)
tree4fe18552620677dbe4f6831c4d9d0ecdb34e678a /arch/arm/kernel
parent88026842b0a760145aa71d69e74fbc9ec118ca44 (diff)
[ARM] Make kernel link address depend on PAGE_OFFSET
We are coding the kernel link address into the makefiles, which is invisibly dependent on PAGE_OFFSET. If PAGE_OFFSET is changed, the makefiles also need to be changed. Make adjustments such that the makefiles encode just the offset from PAGE_OFFSET for the kernel link address, and use PAGE_OFFSET in the linker scripts directly. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/Makefile2
-rw-r--r--arch/arm/kernel/head.S2
-rw-r--r--arch/arm/kernel/vmlinux.lds.S12
3 files changed, 8 insertions, 8 deletions
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
index c11169b5ed9a..25b14c3fdc4a 100644
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -2,7 +2,7 @@
2# Makefile for the linux kernel. 2# Makefile for the linux kernel.
3# 3#
4 4
5AFLAGS_head.o := -DKERNEL_RAM_ADDR=$(TEXTADDR) 5AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET)
6 6
7# Object file lists. 7# Object file lists.
8 8
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index d7d69fd7039f..1e985f2cd70f 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -33,6 +33,8 @@
33#define MACHINFO_PGOFFIO 12 33#define MACHINFO_PGOFFIO 12
34#define MACHINFO_NAME 16 34#define MACHINFO_NAME 16
35 35
36#define KERNEL_RAM_ADDR (PAGE_OFFSET + TEXT_OFFSET)
37
36/* 38/*
37 * swapper_pg_dir is the virtual address of the initial page table. 39 * swapper_pg_dir is the virtual address of the initial page table.
38 * We place the page tables 16K below KERNEL_RAM_ADDR. Therefore, we must 40 * We place the page tables 16K below KERNEL_RAM_ADDR. Therefore, we must
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index 9a47770114d4..2b254e88595c 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -17,15 +17,13 @@ jiffies = jiffies_64;
17jiffies = jiffies_64 + 4; 17jiffies = jiffies_64 + 4;
18#endif 18#endif
19 19
20SECTIONS
21{
20#ifdef CONFIG_XIP_KERNEL 22#ifdef CONFIG_XIP_KERNEL
21#define TEXTADDR XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR) 23 . = XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR);
22#else 24#else
23#define TEXTADDR KERNEL_RAM_ADDR 25 . = PAGE_OFFSET + TEXT_OFFSET;
24#endif 26#endif
25
26SECTIONS
27{
28 . = TEXTADDR;
29 .init : { /* Init code and data */ 27 .init : { /* Init code and data */
30 _stext = .; 28 _stext = .;
31 _sinittext = .; 29 _sinittext = .;
@@ -104,7 +102,7 @@ SECTIONS
104 102
105#ifdef CONFIG_XIP_KERNEL 103#ifdef CONFIG_XIP_KERNEL
106 __data_loc = ALIGN(4); /* location in binary */ 104 __data_loc = ALIGN(4); /* location in binary */
107 . = KERNEL_RAM_ADDR; 105 . = PAGE_OFFSET + TEXT_OFFSET;
108#else 106#else
109 . = ALIGN(THREAD_SIZE); 107 . = ALIGN(THREAD_SIZE);
110 __data_loc = .; 108 __data_loc = .;