@@ -108,6 +108,7 @@ DECLARE_GLOBAL_DATA_PTR;
extern ulong __init_end;
extern ulong __bss_end;
ulong monitor_flash_len;
+extern ulong __bss_start;
#if defined(CONFIG_CMD_BEDBUG)
#include <bedbug/type.h>
@@ -611,6 +612,8 @@ void board_init_r(gd_t *id, ulong dest_addr)
/* The Malloc area is immediately below the monitor copy in DRAM */
malloc_start = dest_addr - TOTAL_MALLOC_LEN;
+ memset(&__bss_start, 0, &__bss_end - &__bss_start);
+
#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
/*
* The gd->arch.cpu pointer is set to an address in flash before
@@ -1,4 +1,4 @@
-/*
+ /*
* Copyright (c) 2011 The Chromium OS Authors.
* (C) Copyright 2002-2006
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
@@ -886,6 +886,12 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
gd = new_gd;
#endif
+#ifdef CONFIG_GLACIER
+ ulong bss_start = (ulong)&__bss_start;
+ ulong bss_end = (ulong)&__bss_end;
+ memset((void *)bss_start, 0, bss_end - bss_start);
+#endif
+
#ifdef CONFIG_NEEDS_MANUAL_RELOC
for (i = 0; i < ARRAY_SIZE(init_sequence_r); i++)
init_sequence_r[i] += gd->reloc_off;