summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Packham <[email protected]>2022-05-20 16:39:22 +1200
committerStefan Roese <[email protected]>2022-07-21 07:46:10 +0200
commit8fd3cf2940464765bc10ae341b525fe0eae8fa87 (patch)
tree68434ba28e6e6472779d0cdb4f0f57f9948198b5
parente33879a45ed3c3c0f9f19f6c658ae4ac6683e42d (diff)
arm64: mvebu: handle non-zero base address for RAM
board_get_usable_ram_top() conflated the RAM size with the top address of RAM. On systems where RAM starts at address 0 these numbers are the same so it went unnoticed. Update board_get_usable_ram_top() to take CONFIG_SYS_SDRAM_BASE into account when determining the top address. Signed-off-by: Chris Packham <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
-rw-r--r--arch/arm/mach-mvebu/arm64-common.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/arm/mach-mvebu/arm64-common.c b/arch/arm/mach-mvebu/arm64-common.c
index 5357aa554db..238edbe6ba5 100644
--- a/arch/arm/mach-mvebu/arm64-common.c
+++ b/arch/arm/mach-mvebu/arm64-common.c
@@ -28,14 +28,13 @@ DECLARE_GLOBAL_DATA_PTR;
* Currently only 2GiB are mapped for system memory. This is what
* we pass to the U-Boot subsystem here.
*/
-#define USABLE_RAM_SIZE 0x80000000
+#define USABLE_RAM_SIZE 0x80000000ULL
ulong board_get_usable_ram_top(ulong total_size)
{
- if (gd->ram_size > USABLE_RAM_SIZE)
- return USABLE_RAM_SIZE;
+ unsigned long top = CONFIG_SYS_SDRAM_BASE + min(gd->ram_size, USABLE_RAM_SIZE);
- return gd->ram_size;
+ return (gd->ram_top > top) ? top : gd->ram_top;
}
/*