Skip to content
Snippets Groups Projects
Commit 240ab5aa authored by Graeme Russ's avatar Graeme Russ
Browse files

x86: Rework relocation calculations

This commit introduces no functional changes - It simply re-arranges the
calculations so that adding to them in future commits will be cleaner

--
Changes for v2:
 - Fixed typo in title
 - Added commit message
parent f48dd6fc
Branches
Tags
No related merge requests found
......@@ -164,24 +164,23 @@ static int calculate_relocation_address(void)
ulong text_start = (ulong)&__text_start;
ulong bss_end = (ulong)&__bss_end;
ulong dest_addr;
ulong rel_offset;
/* Calculate destination RAM Address and relocation offset */
dest_addr = gd->ram_size;
dest_addr -= CONFIG_SYS_STACK_SIZE;
dest_addr -= (bss_end - text_start);
/*
* Round destination address down to 16-byte boundary to keep
* IDT and GDT 16-byte aligned
* NOTE: All destination address are rounded down to 16-byte
* boundary to satisfy various worst-case alignment
* requirements
*/
dest_addr &= ~15;
rel_offset = dest_addr - text_start;
/* Stack is at top of available memory */
dest_addr = gd->ram_size;
gd->start_addr_sp = dest_addr;
gd->start_addr_sp = gd->ram_size;
/* U-Boot is below the stack */
dest_addr -= CONFIG_SYS_STACK_SIZE;
dest_addr -= (bss_end - text_start);
dest_addr &= ~15;
gd->relocaddr = dest_addr;
gd->reloc_off = rel_offset;
gd->reloc_off = (dest_addr - text_start);
return 0;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment