X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cpu%2Fmips%2Fstart.S;h=09e4aab2505957014732b7be7f3c9df2c41887cf;hb=dbd32387920e5ad6f9dd58a7b5012bbabe2a6a21;hp=6e1a78ceac44175b1401a136ad0005e4494115b2;hpb=43c509254fab375c49936498da944658117ed07c;p=oweals%2Fu-boot.git diff --git a/cpu/mips/start.S b/cpu/mips/start.S index 6e1a78ceac..09e4aab250 100644 --- a/cpu/mips/start.S +++ b/cpu/mips/start.S @@ -23,7 +23,6 @@ */ #include -#include #include #include @@ -345,7 +344,8 @@ relocate_code: jr t0 nop - .gpword _GLOBAL_OFFSET_TABLE_ /* _GLOBAL_OFFSET_TABLE_ - _gp */ + .word _gp + .word _GLOBAL_OFFSET_TABLE_ .word uboot_end_data .word uboot_end .word num_got_entries @@ -358,8 +358,10 @@ in_ram: * generated by GNU ld. Skip these reserved entries from relocation. */ lw t3, -4(t0) /* t3 <-- num_got_entries */ - lw t4, -16(t0) /* t4 <-- (_GLOBAL_OFFSET_TABLE_ - _gp) */ - add t4, t4, gp /* t4 now holds _GLOBAL_OFFSET_TABLE_ */ + 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 _GLOBAL_OFFSET_TABLE_ */ addi t4, t4, 8 /* Skipping first two entries. */ li t2, 2 1: