MIPS: simplify relocated _G_O_T_ address calculation
The difference between the address of the original and the relocated _GLOBAL_OFFSET_TABLE_ is always the same as the relocation offset. The relocation offset is already computed and it is available in the 's1/t6' register. Use that to adjust the relocated _G_O_T_ address, instead of calculating the offset again from the _gp value. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Cc: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com> Cc: Xiangfu Liu <xiangfu@openmobilefree.net>
This commit is contained in:
parent
67d80c9f97
commit
025f2b3380
@ -314,7 +314,6 @@ relocate_code:
|
||||
jr t0
|
||||
nop
|
||||
|
||||
.word _gp
|
||||
.word _GLOBAL_OFFSET_TABLE_
|
||||
.word uboot_end_data
|
||||
.word uboot_end
|
||||
@ -329,9 +328,7 @@ in_ram:
|
||||
*/
|
||||
lw t3, -4(t0) # t3 <-- num_got_entries
|
||||
lw t4, -16(t0) # t4 <-- _GLOBAL_OFFSET_TABLE_
|
||||
lw t5, -20(t0) # t5 <-- _gp
|
||||
sub t4, t5 # compute offset
|
||||
add t4, t4, gp # t4 now holds relocated _G_O_T_
|
||||
add t4, s1 # t4 now holds relocated _G_O_T_
|
||||
addi t4, t4, 8 # skipping first two entries
|
||||
li t2, 2
|
||||
1:
|
||||
|
@ -193,7 +193,6 @@ relocate_code:
|
||||
jr t0
|
||||
nop
|
||||
|
||||
.dword _gp
|
||||
.dword _GLOBAL_OFFSET_TABLE_
|
||||
.dword uboot_end_data
|
||||
.dword uboot_end
|
||||
@ -208,9 +207,7 @@ in_ram:
|
||||
*/
|
||||
ld t3, -8(t0) # t3 <-- num_got_entries
|
||||
ld t8, -32(t0) # t8 <-- _GLOBAL_OFFSET_TABLE_
|
||||
ld t9, -40(t0) # t9 <-- _gp
|
||||
dsub t8, t9 # compute offset
|
||||
dadd t8, t8, gp # t8 now holds relocated _G_O_T_
|
||||
dadd t8, s1 # t8 now holds relocated _G_O_T_
|
||||
daddi t8, t8, 16 # skipping first two entries
|
||||
dli t2, 2
|
||||
1:
|
||||
|
@ -122,7 +122,6 @@ relocate_code:
|
||||
jr t0
|
||||
nop
|
||||
|
||||
.word _gp
|
||||
.word _GLOBAL_OFFSET_TABLE_
|
||||
.word uboot_end_data
|
||||
.word uboot_end
|
||||
@ -137,9 +136,7 @@ in_ram:
|
||||
*/
|
||||
lw t3, -4(t0) # t3 <-- num_got_entries
|
||||
lw t4, -16(t0) # t4 <-- _GLOBAL_OFFSET_TABLE_
|
||||
lw t5, -20(t0) # t5 <-- _gp
|
||||
sub t4, t5 # compute offset
|
||||
add t4, t4, gp # t4 now holds relocated _G_O_T_
|
||||
add t4, t6 # t4 now holds relocated _G_O_T_
|
||||
addi t4, t4, 8 # skipping first two entries
|
||||
li t2, 2
|
||||
1:
|
||||
|
Loading…
Reference in New Issue
Block a user