Allow building mips versions with ELDK 3.1.1
authorVlad Lungu <vlad.lungu@windriver.com>
Mon, 5 May 2008 11:04:00 +0000 (14:04 +0300)
committerWolfgang Denk <wd@denx.de>
Mon, 5 May 2008 11:24:12 +0000 (13:24 +0200)
.gpword works only with local symbols on certain binutils versions

Signed-off-by: Vlad Lungu <vlad.lungu@windrvier.com>
cpu/mips/start.S

index 6e1a78ceac44175b1401a136ad0005e4494115b2..947128dd813e7d8c0da58385bae20e1e5779ac73 100644 (file)
@@ -345,7 +345,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 +359,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: