mips: Fix baudrate divisor computation on alchemy cpus
[oweals/u-boot.git] / cpu / mips / start.S
index 6e1a78ceac44175b1401a136ad0005e4494115b2..09e4aab2505957014732b7be7f3c9df2c41887cf 100644 (file)
@@ -23,7 +23,6 @@
  */
 
 #include <config.h>
-#include <version.h>
 #include <asm/regdef.h>
 #include <asm/mipsregs.h>
 
@@ -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: