summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
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];