aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/coldfire/patches/049-mcfv4e_linker_bss_cleanup.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/coldfire/patches/049-mcfv4e_linker_bss_cleanup.patch')
-rw-r--r--target/linux/coldfire/patches/049-mcfv4e_linker_bss_cleanup.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/target/linux/coldfire/patches/049-mcfv4e_linker_bss_cleanup.patch b/target/linux/coldfire/patches/049-mcfv4e_linker_bss_cleanup.patch
new file mode 100644
index 0000000000..06a68aa584
--- /dev/null
+++ b/target/linux/coldfire/patches/049-mcfv4e_linker_bss_cleanup.patch
@@ -0,0 +1,72 @@
+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 */