mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 06:33:41 +00:00
c49f135f72
SVN-Revision: 16547
73 lines
1.8 KiB
Diff
73 lines
1.8 KiB
Diff
From 4e16f08c800d57b986217e0d39d4a06b5bdf641d Mon Sep 17 00:00:00 2001
|
|
From: Kurt Mahan <kmahan@freescale.com>
|
|
Date: Wed, 19 Mar 2008 17:37:44 -0600
|
|
Subject: [PATCH] Move BSS section in linker script and zero it on boot.
|
|
|
|
To work with the latest round of toolchains the bss section
|
|
in the linker script needed to be moved to the end (due to
|
|
the linker thinking there were overlapping sections).
|
|
|
|
The BSS section needs to be manually zeroed.
|
|
|
|
LTIBName: mcfv4e-linker-bss-cleanup
|
|
Signed-off-by: Kurt Mahan <kmahan@freescale.com>
|
|
---
|
|
arch/m68k/coldfire/head.S | 11 +++++++++++
|
|
arch/m68k/coldfire/vmlinux-cf.lds | 11 ++++++++---
|
|
2 files changed, 19 insertions(+), 3 deletions(-)
|
|
|
|
--- a/arch/m68k/coldfire/head.S
|
|
+++ b/arch/m68k/coldfire/head.S
|
|
@@ -321,6 +321,17 @@ ENTRY(__start)
|
|
movec %d0, %acr3
|
|
nop
|
|
|
|
+#ifdef CONFIG_COLDFIRE
|
|
+/* zero bss */
|
|
+ lea _sbss,%a0
|
|
+ lea _ebss,%a1
|
|
+ clrl %d0
|
|
+_loop_bss:
|
|
+ movel %d0,(%a0)+
|
|
+ cmpl %a0,%a1
|
|
+ bne _loop_bss
|
|
+#endif
|
|
+
|
|
/* If you change the memory size to another value make a matching
|
|
change in paging_init(cf-mmu.c) to zones_size[]. */
|
|
|
|
--- a/arch/m68k/coldfire/vmlinux-cf.lds
|
|
+++ b/arch/m68k/coldfire/vmlinux-cf.lds
|
|
@@ -51,9 +51,6 @@ SECTIONS
|
|
CONSTRUCTORS
|
|
} :data
|
|
|
|
- .bss : AT(ADDR(.bss) - LOAD_OFFSET) { /* BSS */
|
|
- *(.bss)
|
|
- }
|
|
|
|
. = ALIGN(16);
|
|
.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET ) {
|
|
@@ -62,6 +59,8 @@ SECTIONS
|
|
|
|
_edata = .; /* End of data section */
|
|
|
|
+ NOTES /* support ld --build-id */
|
|
+
|
|
. = ALIGN(8192); /* Initrd */
|
|
.init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
|
|
__init_begin = .;
|
|
@@ -111,6 +110,12 @@ SECTIONS
|
|
*(.data.init_task) /* The initial task and kernel stack */
|
|
}
|
|
|
|
+ _sbss = .;
|
|
+ .bss : AT(ADDR(.bss) - LOAD_OFFSET) { /* BSS */
|
|
+ *(.bss)
|
|
+ }
|
|
+ _ebss = .;
|
|
+
|
|
_end = . ;
|
|
|
|
/* Sections to be discarded */
|