summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2008-05-05 13:25:04 +0200
committerWolfgang Denk <wd@denx.de>2008-05-05 13:25:04 +0200
commit908261f3fdb418091d8c60bfbd7eb85e5869b579 (patch)
tree87f976b1174cad1f5270e72bb0201dcb92eeb082
parent12a67a9e51f6b3ec26cb0f077fb5685a447c359d (diff)
parent0f8c62a14b523c56874ebcb67c1a16c99aad48b3 (diff)
Merge branch 'master' of git+ssh://10.10.0.7/home/wd/git/u-boot/master
-rw-r--r--cpu/mips/start.S9
1 files changed, 6 insertions, 3 deletions
diff --git a/cpu/mips/start.S b/cpu/mips/start.S
index 6e1a78ceac4..947128dd813 100644
--- a/cpu/mips/start.S
+++ b/cpu/mips/start.S
@@ -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: