From d716b126718d874f52ffb694e6c22b7235cec483 Mon Sep 17 00:00:00 2001 From: wdenk Date: Mon, 12 Apr 2004 16:12:49 +0000 Subject: Add startup code to clear the BSS of standalone applications --- CHANGELOG | 2 ++ examples/mips.lds | 3 +++ examples/nios.lds | 1 + examples/stubs.c | 9 +++++++++ 4 files changed, 15 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 3923ca8ed6..cd057958fb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ Changes for U-Boot 1.1.1: ====================================================================== +* add startup code to clear the BSS of standalone applications + * Fix if / elif handling bug in HUSH shell ====================================================================== diff --git a/examples/mips.lds b/examples/mips.lds index 8ed01c4458..9d9849bf5c 100644 --- a/examples/mips.lds +++ b/examples/mips.lds @@ -51,6 +51,9 @@ SECTIONS .sdata : { *(.sdata) } . = ALIGN(4); + __bss_start = .; .sbss : { *(.sbss) } .bss : { *(.bss) } + + _end = .; } diff --git a/examples/nios.lds b/examples/nios.lds index 527eb3ad45..dd5bfad7b1 100644 --- a/examples/nios.lds +++ b/examples/nios.lds @@ -57,4 +57,5 @@ SECTIONS } . = ALIGN(4); __bss_end = .; + _end = .; } diff --git a/examples/stubs.c b/examples/stubs.c index a26337a926..a897d0d213 100644 --- a/examples/stubs.c +++ b/examples/stubs.c @@ -110,8 +110,17 @@ static void __attribute__((unused)) dummy(void) #include <_exports.h> } +extern unsigned long __bss_start, _end; + void app_startup(char **argv) { + unsigned long * cp = &__bss_start; + + /* Zero out BSS */ + while (cp < &_end) { + *cp++ = 0; + } + #if defined(CONFIG_I386) /* x86 does not have a dedicated register for passing global_data */ global_data = (gd_t *)argv[-1]; -- cgit v1.2.1