summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG2
-rw-r--r--examples/mips.lds3
-rw-r--r--examples/nios.lds1
-rw-r--r--examples/stubs.c9
4 files changed, 15 insertions, 0 deletions
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];
OpenPOWER on IntegriCloud