aboutsummaryrefslogtreecommitdiff
path: root/common/spl/spl.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/spl/spl.c')
-rw-r--r--common/spl/spl.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/common/spl/spl.c b/common/spl/spl.c
index a5892d7988..4b319d6739 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -347,8 +347,17 @@ ulong spl_relocate_stack_gd(void)
memcpy(new_gd, (void *)gd, sizeof(gd_t));
gd = new_gd;
- /* Clear the BSS. */
- memset(__bss_start, 0, __bss_end - __bss_start);
+#ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE
+ if (CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN) {
+ if (!(gd->flags & GD_FLG_SPL_INIT))
+ panic("spl_init must be called before heap reloc");
+
+ ptr -= CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN;
+ gd->malloc_base = ptr;
+ gd->malloc_limit = CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN;
+ gd->malloc_ptr = 0;
+ }
+#endif
return ptr;
#else