diff options
author | York Sun <yorksun@freescale.com> | 2015-12-07 11:05:29 -0800 |
---|---|---|
committer | York Sun <yorksun@freescale.com> | 2015-12-15 08:57:33 +0800 |
commit | aabd7ddb889aec3c6c4139974f66a44e2ce46ba5 (patch) | |
tree | 994bb4cf82b7efd6c61866cfd551905859288d2f /common | |
parent | c107c0c05c988ac6cfba6de60c90f105bbea0e1e (diff) | |
download | u-boot-aabd7ddb889aec3c6c4139974f66a44e2ce46ba5.zip u-boot-aabd7ddb889aec3c6c4139974f66a44e2ce46ba5.tar.gz u-boot-aabd7ddb889aec3c6c4139974f66a44e2ce46ba5.tar.bz2 |
common: Rewrite hiding the end of memory
As the name may be confusing, the CONFIG_SYS_MEM_TOP_HIDE reserves
some memory from the end of ram, tracked by gd->ram_size. It is not
always the top of u-boot visible memory. Rewrite the macro with a
weak function to provide flexibility for complex calcuation. Legacy
use of this macro is still supported.
Signed-off-by: York Sun <yorksun@freescale.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/board_f.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/common/board_f.c b/common/board_f.c index bd5a486..8094ac4 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -317,6 +317,15 @@ __weak ulong board_get_usable_ram_top(ulong total_size) return gd->ram_top; } +__weak phys_size_t board_reserve_ram_top(phys_size_t ram_size) +{ +#ifdef CONFIG_SYS_MEM_TOP_HIDE + return ram_size - CONFIG_SYS_MEM_TOP_HIDE; +#else + return ram_size; +#endif +} + static int setup_dest_addr(void) { debug("Monitor len: %08lX\n", gd->mon_len); @@ -333,19 +342,17 @@ static int setup_dest_addr(void) */ gd->secure_ram = gd->ram_size; #endif -#if defined(CONFIG_SYS_MEM_TOP_HIDE) /* * Subtract specified amount of memory to hide so that it won't * get "touched" at all by U-Boot. By fixing up gd->ram_size * the Linux kernel should now get passed the now "corrected" - * memory size and won't touch it either. This should work - * for arch/ppc and arch/powerpc. Only Linux board ports in - * arch/powerpc with bootwrapper support, that recalculate the - * memory size from the SDRAM controller setup will have to - * get fixed. + * memory size and won't touch it either. This has been used + * by arch/powerpc exclusively. Now ARMv8 takes advantage of + * thie mechanism. If memory is split into banks, addresses + * need to be calculated. */ - gd->ram_size -= CONFIG_SYS_MEM_TOP_HIDE; -#endif + gd->ram_size = board_reserve_ram_top(gd->ram_size); + #ifdef CONFIG_SYS_SDRAM_BASE gd->ram_top = CONFIG_SYS_SDRAM_BASE; #endif |