
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
--- commit 3a1e66ba75172959973377d6069f1d12e1a4ecb3 tree 6fdde574dd5328b805e0e438ebb32cc7e7de8f4d parent dcc0264878406d52b879d2e5a63d3d793371434e author Stefan Roese sr@denx.de Sun, 08 Jul 2007 13:42:52 +0200 committer Stefan Roese sr@denx.de Sun, 08 Jul 2007 13:42:52 +0200
lib_ppc/board.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/lib_ppc/board.c b/lib_ppc/board.c index 8bb885d..5e156ab 100644 --- a/lib_ppc/board.c +++ b/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