summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorRandolph Sapp <[email protected]>2026-06-04 10:50:38 -0500
committerTom Rini <[email protected]>2026-06-15 11:04:39 -0600
commit48412f8f2962e27abe3b9a4a73221cebbfd73333 (patch)
tree56704e6bbe3de3000f235237efb99f6d69cb0ef2 /common
parentde12fa4df89277460aacaea7c9a43421190ee04d (diff)
memory: reserve from start_addr_sp to initial_relocaddr
Add a new global data struct member called initial_relocaddr. This stores the original value of relocaddr, directly from setup_dest_addr. This is specifically to avoid any adjustments made by other init functions. Reserve the memory from gd->start_addr_sp - CONFIG_STACK_SIZE to gd->initial_relocaddr instead of gd->ram_top. This allows platform specific relocation addresses to work without unnecessarily painting over a large range. Signed-off-by: Randolph Sapp <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
Diffstat (limited to 'common')
-rw-r--r--common/board_f.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/common/board_f.c b/common/board_f.c
index ce87c619e68..aeb53b4c274 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -330,6 +330,8 @@ __weak int arch_setup_dest_addr(void)
static int setup_dest_addr(void)
{
+ int ret;
+
debug("Monitor len: %08x\n", gd->mon_len);
/*
* Ram is setup, size stored in gd !!
@@ -356,7 +358,12 @@ static int setup_dest_addr(void)
gd->relocaddr = gd->ram_top;
debug("Ram top: %08llX\n", (unsigned long long)gd->ram_top);
- return arch_setup_dest_addr();
+ ret = arch_setup_dest_addr();
+ if (ret)
+ return ret;
+
+ gd->initial_relocaddr = gd->relocaddr;
+ return 0;
}
#ifdef CFG_PRAM