From 4b99327a4121a28d2bdb2c2b841f5d97931ae905 Mon Sep 17 00:00:00 2001
From: Richard Retanubun <RichardRetanubun@RuggedCom.com>
Date: Fri, 15 Jan 2010 10:06:06 -0500
Subject: [PATCH] PPC: Record U-Boot's relocated address in RAM and show in
 bdinfo.

This patch uses gd->relocaddr variable to store uboot's relocated
address in RAM and shows it in bdinfo command.

This patch moves CONFIG_AMIGAONEG3SE style copying of the address
in board_init_f to just before relocation is actually done.

Signed-off-by: Richard Retanubun <RichardRetanubun@RuggedCom.com>
Tested-by: Detlev Zundel <dzu@denx.de>
---
 common/cmd_bdinfo.c           | 1 +
 include/asm-ppc/global_data.h | 2 --
 lib_ppc/board.c               | 6 ++----
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
index 11c154731e..f8400bcc04 100644
--- a/common/cmd_bdinfo.c
+++ b/common/cmd_bdinfo.c
@@ -115,6 +115,7 @@ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #endif
 	printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
 	printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
+	print_num ("relocaddr", gd->relocaddr);
 	return 0;
 }
 
diff --git a/include/asm-ppc/global_data.h b/include/asm-ppc/global_data.h
index 3f11918746..d3dd44e96d 100644
--- a/include/asm-ppc/global_data.h
+++ b/include/asm-ppc/global_data.h
@@ -152,9 +152,7 @@ typedef	struct	global_data {
     defined(CONFIG_SANDPOINT)
 	void *		console_addr;
 #endif
-#ifdef CONFIG_AMIGAONEG3SE
 	unsigned long	relocaddr;	/* Start address of U-Boot in RAM */
-#endif
 #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
 	unsigned long	fb_base;	/* Base address of framebuffer memory	*/
 #endif
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 2889b2c2c5..a30acee4fe 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -477,10 +477,6 @@ void board_init_f (ulong bootflag)
 
 	debug ("Reserving %ldk for U-Boot at: %08lx\n", len >> 10, addr);
 
-#ifdef CONFIG_AMIGAONEG3SE
-	gd->relocaddr = addr;
-#endif
-
 	/*
 	 * reserve memory for malloc() arena
 	 */
@@ -612,6 +608,8 @@ void board_init_f (ulong bootflag)
 
 	WATCHDOG_RESET();
 
+	gd->relocaddr = addr; /* Record relocation address, useful for debug */
+
 	memcpy (id, (void *)gd, sizeof (gd_t));
 
 	relocate_code (addr_sp, id, addr);
-- 
2.39.5