diff options
author | Mike Frysinger <vapier@gentoo.org> | 2010-12-24 12:48:16 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2011-04-08 00:44:26 -0400 |
commit | 5a9a2c55d14260bc5b9fb6c36e2b32ee325a8aec (patch) | |
tree | 14930892f3ca4d15c058056529e5b4c037de0df2 | |
parent | d2ab733c0585cb58983eadb82b2be7127e437fd9 (diff) | |
download | u-boot-imx-5a9a2c55d14260bc5b9fb6c36e2b32ee325a8aec.zip u-boot-imx-5a9a2c55d14260bc5b9fb6c36e2b32ee325a8aec.tar.gz u-boot-imx-5a9a2c55d14260bc5b9fb6c36e2b32ee325a8aec.tar.bz2 |
Blackfin: fix bd_t handling
The recent global data changes (making the size autogenerated) broke the
board info handling on Blackfin ports as we were lying and lumping the
bd_t size in with the gd_t size. So use the new dedicated bd_t size to
setup its own address in memory.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r-- | arch/blackfin/include/asm/config.h | 5 | ||||
-rw-r--r-- | arch/blackfin/lib/board.c | 10 |
2 files changed, 6 insertions, 9 deletions
diff --git a/arch/blackfin/include/asm/config.h b/arch/blackfin/include/asm/config.h index f0f3a39..89814cd 100644 --- a/arch/blackfin/include/asm/config.h +++ b/arch/blackfin/include/asm/config.h @@ -109,8 +109,11 @@ #ifndef CONFIG_SYS_GBL_DATA_ADDR # define CONFIG_SYS_GBL_DATA_ADDR (CONFIG_SYS_MALLOC_BASE - GENERATED_GBL_DATA_SIZE) #endif +#ifndef CONFIG_SYS_BD_INFO_ADDR +# define CONFIG_SYS_BD_INFO_ADDR (CONFIG_SYS_GBL_DATA_ADDR - GENERATED_BD_INFO_SIZE) +#endif #ifndef CONFIG_STACKBASE -# define CONFIG_STACKBASE (CONFIG_SYS_GBL_DATA_ADDR - 4) +# define CONFIG_STACKBASE (CONFIG_SYS_BD_INFO_ADDR - 4) #endif #ifndef CONFIG_SYS_MEMTEST_START # define CONFIG_SYS_MEMTEST_START 0 diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index 2b1f78c..47d487f 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -207,7 +207,6 @@ extern int timer_init(void); void board_init_f(ulong bootflag) { - ulong addr; bd_t *bd; char buf[32]; @@ -244,14 +243,9 @@ void board_init_f(ulong bootflag) gd = (gd_t *) (CONFIG_SYS_GBL_DATA_ADDR); memset((void *)gd, 0, GENERATED_GBL_DATA_SIZE); - /* Board data initialization */ - addr = (CONFIG_SYS_GBL_DATA_ADDR + sizeof(gd_t)); - - /* Align to 4 byte boundary */ - addr &= ~(4 - 1); - bd = (bd_t *) addr; + bd = (bd_t *) (CONFIG_SYS_BD_INFO_ADDR); gd->bd = bd; - memset((void *)bd, 0, sizeof(bd_t)); + memset((void *)bd, 0, GENERATED_BD_INFO_SIZE); bd->bi_r_version = version_string; bd->bi_cpu = MK_STR(CONFIG_BFIN_CPU); |