Fix malloc problem introduced with the relocation fixup for the PPC platform
authorStefan Roese <sr@denx.de>
Sun, 8 Jul 2007 11:44:27 +0000 (13:44 +0200)
committerWolfgang Denk <wd@denx.de>
Tue, 10 Jul 2007 22:43:32 +0000 (00:43 +0200)
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>
lib_ppc/board.c

index 8651cb3c16c05d1ca51e03c261d708ad5b776256..80baab89203fb024c0fca1e4e2baa5900ae62643 100644 (file)
@@ -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