summaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2007-02-22 16:18:09 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-02-25 16:41:38 +0000
commite98ff7f6d8164c5636538998fb7d1e08b1fbbddd (patch)
treeaa5448d3b8c293e7e0df786669092e6cac55c068 /arch/arm/kernel/vmlinux.lds.S
parent0ebffe39f8ec8b5b126d9505852a396371014555 (diff)
downloadop-kernel-dev-e98ff7f6d8164c5636538998fb7d1e08b1fbbddd.zip
op-kernel-dev-e98ff7f6d8164c5636538998fb7d1e08b1fbbddd.tar.gz
[ARM] 4224/2: allow XIP kernel to boot again
Since commit 2552fc27ff79b10b9678d92bcaef21df38bb7bb6 XIP kernels failed to boot because (_end - PAGE_OFFSET - 1) is much smaller than the size of the kernel text and data in the XIP case, causing the kernel not to be entirely mapped. Even in the non-XIP case, the use of (_end - PAGE_OFFSET - 1) is wrong because it produces a too large value if TEXT_OFFSET is larger than 1MB. Finally the original code was performing one loop too many. Let's break the loop when the section pointer has passed the last byte of the kernel instead. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/vmlinux.lds.S')
-rw-r--r--arch/arm/kernel/vmlinux.lds.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index b929a60..ddbdad4 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -156,6 +156,7 @@ SECTIONS
_edata = .;
}
+ _edata_loc = __data_loc + SIZEOF(.data);
.bss : {
__bss_start = .; /* BSS */
OpenPOWER on IntegriCloud