summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorwdenk <wdenk>2004-04-12 16:12:49 +0000
committerwdenk <wdenk>2004-04-12 16:12:49 +0000
commitd716b126718d874f52ffb694e6c22b7235cec483 (patch)
tree621a24955203ad5c221a3049fee60048e74b556e /examples
parent56b86bf0cd6ce45d337154c133ab361120ee5569 (diff)
downloadbootable_bootloader_goldelico_gta04-d716b126718d874f52ffb694e6c22b7235cec483.zip
bootable_bootloader_goldelico_gta04-d716b126718d874f52ffb694e6c22b7235cec483.tar.gz
bootable_bootloader_goldelico_gta04-d716b126718d874f52ffb694e6c22b7235cec483.tar.bz2
Add startup code to clear the BSS of standalone applications
Diffstat (limited to 'examples')
-rw-r--r--examples/mips.lds3
-rw-r--r--examples/nios.lds1
-rw-r--r--examples/stubs.c9
3 files changed, 13 insertions, 0 deletions
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];