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