From 4e16f08c800d57b986217e0d39d4a06b5bdf641d Mon Sep 17 00:00:00 2001 From: Kurt Mahan 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 --- 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 */