From ff2b2ba845ee682b5eafe4abbb9adbf48730af4b Mon Sep 17 00:00:00 2001 From: Alexey Brodkin Date: Fri, 25 May 2018 16:08:14 +0300 Subject: [PATCH] board_f: Only reserve memory for U-Boot if we're going to relocate In case of no relocation we'll just waste some space at the very end of usable memory area. If target device has very limited amount of memory (for example 256 kB) this loss will be pretty inconvenient. Signed-off-by: Alexey Brodkin Reviewed-by: Simon Glass Cc: Bin Meng Cc: Heiko Schocher Cc: York Sun Cc: Stefan Roese --- common/board_f.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/common/board_f.c b/common/board_f.c index fa667c764b..e943347ce3 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -394,19 +394,21 @@ static int reserve_trace(void) static int reserve_uboot(void) { - /* - * reserve memory for U-Boot code, data & bss - * round down to next 4 kB limit - */ - gd->relocaddr -= gd->mon_len; - gd->relocaddr &= ~(4096 - 1); -#if defined(CONFIG_E500) || defined(CONFIG_MIPS) - /* round down to next 64 kB limit so that IVPR stays aligned */ - gd->relocaddr &= ~(65536 - 1); -#endif - - debug("Reserving %ldk for U-Boot at: %08lx\n", gd->mon_len >> 10, - gd->relocaddr); + if (!(gd->flags & GD_FLG_SKIP_RELOC)) { + /* + * reserve memory for U-Boot code, data & bss + * round down to next 4 kB limit + */ + gd->relocaddr -= gd->mon_len; + gd->relocaddr &= ~(4096 - 1); + #if defined(CONFIG_E500) || defined(CONFIG_MIPS) + /* round down to next 64 kB limit so that IVPR stays aligned */ + gd->relocaddr &= ~(65536 - 1); + #endif + + debug("Reserving %ldk for U-Boot at: %08lx\n", + gd->mon_len >> 10, gd->relocaddr); + } gd->start_addr_sp = gd->relocaddr; -- 2.39.5