board_f: Only reserve memory for U-Boot if we're going to relocate
authorAlexey Brodkin <Alexey.Brodkin@synopsys.com>
Fri, 25 May 2018 13:08:14 +0000 (16:08 +0300)
committerTom Rini <trini@konsulko.com>
Wed, 6 Jun 2018 00:19:08 +0000 (20:19 -0400)
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 <abrodkin@synopsys.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: York Sun <york.sun@nxp.com>
Cc: Stefan Roese <sr@denx.de>
common/board_f.c

index fa667c764bc650a13b29ddd15d2859dfa657ce68..e943347ce3dfdf32a6f9b8dc233833539295da66 100644 (file)
@@ -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;