diff options
| author | Randolph Sapp <[email protected]> | 2026-06-04 10:50:38 -0500 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2026-06-15 11:04:39 -0600 |
| commit | 48412f8f2962e27abe3b9a4a73221cebbfd73333 (patch) | |
| tree | 56704e6bbe3de3000f235237efb99f6d69cb0ef2 /common | |
| parent | de12fa4df89277460aacaea7c9a43421190ee04d (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.c | 9 |
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 |
