diff options
author | Marian Balakowicz <m8@semihalf.com> | 2008-05-13 15:53:29 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-06-03 19:34:19 +0200 |
commit | 95d449ad4de79dd32b1705b8a4d3550f1e9081e3 (patch) | |
tree | d8ba02939606d99918d95581520b6caa1a55f3f7 /common | |
parent | 6956d53d9934862507f83f0e3255dfd4662e7482 (diff) | |
download | u-boot-imx-95d449ad4de79dd32b1705b8a4d3550f1e9081e3.zip u-boot-imx-95d449ad4de79dd32b1705b8a4d3550f1e9081e3.tar.gz u-boot-imx-95d449ad4de79dd32b1705b8a4d3550f1e9081e3.tar.bz2 |
Avoid initrd and logbuffer area overlaps
Add logbuffer to reserved LMB areas to prevent initrd allocation
from overlaping with it.
Make sure to use correct logbuffer base address.
Signed-off-by: Marian Balakowicz <m8@semihalf.com>
Diffstat (limited to 'common')
-rw-r--r-- | common/cmd_log.c | 8 | ||||
-rw-r--r-- | common/image.c | 10 |
2 files changed, 17 insertions, 1 deletions
diff --git a/common/cmd_log.c b/common/cmd_log.c index c6e72ac..fdcc575 100644 --- a/common/cmd_log.c +++ b/common/cmd_log.c @@ -66,6 +66,12 @@ static logbuff_t *log; #endif static char *lbuf; +unsigned long __logbuffer_base(void) +{ + return CFG_SDRAM_BASE + gd->bd->bi_memsize - LOGBUFF_LEN; +} +unsigned long logbuffer_base (void) __attribute__((weak, alias("__logbuffer_base"))); + void logbuff_init_ptrs (void) { unsigned long tag, post_word; @@ -75,7 +81,7 @@ void logbuff_init_ptrs (void) log = (logbuff_t *)CONFIG_ALT_LH_ADDR; lbuf = (char *)CONFIG_ALT_LB_ADDR; #else - log = (logbuff_t *)(gd->bd->bi_memsize-LOGBUFF_LEN) - 1; + log = (logbuff_t *)(logbuffer_base ()) - 1; lbuf = (char *)log->buf; #endif diff --git a/common/image.c b/common/image.c index 67e594d..9188024 100644 --- a/common/image.c +++ b/common/image.c @@ -35,6 +35,10 @@ #include <dataflash.h> #endif +#ifdef CONFIG_LOGBUFFER +#include <logbuff.h> +#endif + #if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) #include <rtc.h> #endif @@ -1013,6 +1017,12 @@ int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len, initrd_high = ~0; } + +#ifdef CONFIG_LOGBUFFER + /* Prevent initrd from overwriting logbuffer */ + lmb_reserve(lmb, logbuffer_base() - LOGBUFF_OVERHEAD, LOGBUFF_RESERVE); +#endif + debug ("## initrd_high = 0x%08lx, copy_to_ram = %d\n", initrd_high, initrd_copy_to_ram); |