diff options
-rw-r--r-- | CHANGELOG | 2 | ||||
-rw-r--r-- | examples/mips.lds | 3 | ||||
-rw-r--r-- | examples/nios.lds | 1 | ||||
-rw-r--r-- | examples/stubs.c | 9 |
4 files changed, 15 insertions, 0 deletions
@@ -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 8ed01c4..9d9849b 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 527eb3a..dd5bfad 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 a26337a..a897d0d 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]; |