sub     s1, s2, t0              # s1 <-- relocation offset
 
        la      t3, in_ram
-       lw      t2, -12(t3)             # t2 <-- uboot_end_data
+       lw      t2, -12(t3)             # t2 <-- __image_copy_end
        move    t1, a2
 
        add     gp, s1                  # adjust gp
        jr      t0
         nop
 
+       .word   __image_copy_end
        .word   _GLOBAL_OFFSET_TABLE_
-       .word   uboot_end_data
-       .word   uboot_end
        .word   num_got_entries
 
 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_
+       lw      t4, -8(t0)              # t4 <-- _GLOBAL_OFFSET_TABLE_
        add     t4, s1                  # t4 now holds relocated _G_O_T_
        addi    t4, t4, 8               # skipping first two entries
        li      t2, 2
 
        dsub    s1, s2, t0              # s1 <-- relocation offset
 
        dla     t3, in_ram
-       ld      t2, -24(t3)             # t2 <-- uboot_end_data
+       ld      t2, -24(t3)             # t2 <-- __image_copy_end
        move    t1, a2
 
        dadd    gp, s1                  # adjust gp
        jr      t0
         nop
 
+       .dword  __image_copy_end
        .dword  _GLOBAL_OFFSET_TABLE_
-       .dword  uboot_end_data
-       .dword  uboot_end
        .dword  num_got_entries
 
 in_ram:
         * generated by GNU ld. Skip these reserved entries from relocation.
         */
        ld      t3, -8(t0)              # t3 <-- num_got_entries
-       ld      t8, -32(t0)             # t8 <-- _GLOBAL_OFFSET_TABLE_
+       ld      t8, -16(t0)             # t8 <-- _GLOBAL_OFFSET_TABLE_
        dadd    t8, s1                  # t8 now holds relocated _G_O_T_
        daddi   t8, t8, 16              # skipping first two entries
        dli     t2, 2
 
                #include <u-boot.lst>
        }
 
-       uboot_end_data = .;
-
        . = ALIGN(4);
        __image_copy_end = .;
 
                . = ALIGN(4);
                __bss_end = .;
        }
-
-       uboot_end = .;
 }
 
        sub     t6, a2, t0              # t6 <-- relocation offset
 
        la      t3, in_ram
-       lw      t2, -12(t3)             # t2 <-- uboot_end_data
+       lw      t2, -12(t3)             # t2 <-- __image_copy_end
        move    t1, a2
 
        add     gp, t6                  # adjust gp
        jr      t0
         nop
 
+       .word   __image_copy_end
        .word   _GLOBAL_OFFSET_TABLE_
-       .word   uboot_end_data
-       .word   uboot_end
        .word   num_got_entries
 
 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_
+       lw      t4, -8(t0)              # t4 <-- _GLOBAL_OFFSET_TABLE_
        add     t4, t6                  # t4 now holds relocated _G_O_T_
        addi    t4, t4, 8               # skipping first two entries
        li      t2, 2
 
  * Copyright (C) 2003 Wolfgang Denk, DENX Software Engineering, wd@denx.de
  */
 
-extern ulong uboot_end_data;
-extern ulong uboot_end;
-
 static inline unsigned long bss_start(void)
 {
        extern ulong __bss_start;