Browse Source

Add startup code to clear the BSS of standalone applications

wdenk 20 years ago
parent
commit
d716b12671
4 changed files with 15 additions and 0 deletions
  1. 2 0
      CHANGELOG
  2. 3 0
      examples/mips.lds
  3. 1 0
      examples/nios.lds
  4. 9 0
      examples/stubs.c

+ 2 - 0
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
 
 ======================================================================

+ 3 - 0
examples/mips.lds

@@ -51,6 +51,9 @@ SECTIONS
 	.sdata  : { *(.sdata) }
 
 	. = ALIGN(4);
+	__bss_start = .;
 	.sbss  : { *(.sbss) }
 	.bss  : { *(.bss) }
+
+	_end = .;
 }

+ 1 - 0
examples/nios.lds

@@ -57,4 +57,5 @@ SECTIONS
 	}
 	. = ALIGN(4);
 	__bss_end = .;
+	_end = .;
 }

+ 9 - 0
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];