浏览代码

Fix malloc problem introduced with the relocation fixup for the PPC platform

The relocation fixup didn't handle the malloc pointer initialization
correctly. This patch fixes this problem. Tested successfully on 4xx.
The relocation fixup patches for 4xx will follow soon.

Signed-off-by: Stefan Roese <sr@denx.de>
Stefan Roese 18 年之前
父节点
当前提交
e9514751cf
共有 1 个文件被更改,包括 5 次插入4 次删除
  1. 5 4
      lib_ppc/board.c

+ 5 - 4
lib_ppc/board.c

@@ -139,10 +139,10 @@ static	ulong	mem_malloc_brk	 = 0;
  */
 static void mem_malloc_init (void)
 {
-	ulong dest_addr = CFG_MONITOR_BASE + gd->reloc_off;
-
-	mem_malloc_end = dest_addr;
-	mem_malloc_start = dest_addr - TOTAL_MALLOC_LEN;
+#if !defined(CONFIG_RELOC_FIXUP_WORKS)
+	mem_malloc_end = CFG_MONITOR_BASE + gd->reloc_off;
+#endif
+	mem_malloc_start = mem_malloc_end - TOTAL_MALLOC_LEN;
 	mem_malloc_brk = mem_malloc_start;
 
 	memset ((void *) mem_malloc_start,
@@ -623,6 +623,7 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
 #if defined(CONFIG_RELOC_FIXUP_WORKS)
 	gd->reloc_off = 0;
+	mem_malloc_end = dest_addr;
 #else
 	gd->reloc_off = dest_addr - CFG_MONITOR_BASE;
 #endif