openwrt/target/linux/coldfire/patches/049-mcfv4e_linker_bss_clean...

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 */