summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/sifive/fu540/cbmem.c8
-rw-r--r--src/soc/sifive/fu540/include/soc/addressmap.h1
2 files changed, 7 insertions, 2 deletions
diff --git a/src/soc/sifive/fu540/cbmem.c b/src/soc/sifive/fu540/cbmem.c
index 8648370f20..1c68de894b 100644
--- a/src/soc/sifive/fu540/cbmem.c
+++ b/src/soc/sifive/fu540/cbmem.c
@@ -14,9 +14,13 @@
*/
#include <cbmem.h>
+#include <soc/addressmap.h>
+#include <soc/sdram.h>
+#include <stdlib.h>
+#include <symbols.h>
void *cbmem_top(void)
{
- /* dummy value */
- return (void *)(4ULL * GiB);
+ return (void *)min((uintptr_t)_dram + sdram_size_mb() * MiB,
+ FU540_MAXDRAM);
}
diff --git a/src/soc/sifive/fu540/include/soc/addressmap.h b/src/soc/sifive/fu540/include/soc/addressmap.h
index 21709b5443..cd611494bb 100644
--- a/src/soc/sifive/fu540/include/soc/addressmap.h
+++ b/src/soc/sifive/fu540/include/soc/addressmap.h
@@ -34,3 +34,4 @@
#define FU540_QSPI0FLASH 0x20000000
#define FU540_QSPI1FLASH 0x30000000
#define FU540_DRAM 0x80000000
+#define FU540_MAXDRAM 0x2000000000ULL