Message ID | 1359557466-9592-1-git-send-email-juhosg@openwrt.org |
---|---|
State | Accepted |
Delegated to: | Daniel Schwierzeck |
Headers | show |
2013/1/30 Gabor Juhos <juhosg@openwrt.org>: > The current code uses four instructions and a > temporary register to calculate the relocation > offset and to adjust the gp register. > > The relocation offset can be calculated directly > from the CONFIG_SYS_MONITOR_BASE constant and from > the destination address. The resulting offset can > be used to adjust the gp pointer. > > This approach makes the code a bit simpler because > it needs two instructions only. > > Signed-off-by: Gabor Juhos <juhosg@openwrt.org> > Cc: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com> > Cc: Xiangfu Liu <xiangfu@openmobilefree.net> > --- > arch/mips/cpu/xburst/start.S | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) applied to u-boot-mips/master, thanks
diff --git a/arch/mips/cpu/xburst/start.S b/arch/mips/cpu/xburst/start.S index 194d745..35728eb 100644 --- a/arch/mips/cpu/xburst/start.S +++ b/arch/mips/cpu/xburst/start.S @@ -64,19 +64,13 @@ relocate_code: move sp, a0 # set new stack pointer li t0, CONFIG_SYS_MONITOR_BASE + sub t6, a2, t0 # t6 <-- relocation offset + la t3, in_ram lw t2, -12(t3) # t2 <-- uboot_end_data move t1, a2 - /* - * Fix $gp: - * - * New $gp = (Old $gp - CONFIG_SYS_MONITOR_BASE) + Destination Address - */ - move t6, gp - sub gp, CONFIG_SYS_MONITOR_BASE - add gp, a2 # gp now adjusted - sub t6, gp, t6 # t6 <-- relocation offset + add gp, t6 # adjust gp /* * t0 = source address
The current code uses four instructions and a temporary register to calculate the relocation offset and to adjust the gp register. The relocation offset can be calculated directly from the CONFIG_SYS_MONITOR_BASE constant and from the destination address. The resulting offset can be used to adjust the gp pointer. This approach makes the code a bit simpler because it needs two instructions only. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Cc: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com> Cc: Xiangfu Liu <xiangfu@openmobilefree.net> --- arch/mips/cpu/xburst/start.S | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-)