ARM,relocate: do not use r9
authorJeroen Hofstee <jeroen@myspectrum.nl>
Sat, 21 Sep 2013 12:04:40 +0000 (14:04 +0200)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Mon, 23 Sep 2013 15:58:24 +0000 (17:58 +0200)
r9 is a platform-specific register in ARM EABI and not per
definition a general purpose register. Do not use it while
relocating so it can be used for gd.

cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
arch/arm/lib/relocate.S

index ab90430dced64897e60c63cc739bd36a9f4cc52e..a62a55656128077890e23bb3ac170be0f464e6bf 100644 (file)
@@ -22,7 +22,7 @@
 
 ENTRY(relocate_code)
        ldr     r1, =__image_copy_start /* r1 <- SRC &__image_copy_start */
-       subs    r9, r0, r1              /* r9 <- relocation offset */
+       subs    r4, r0, r1              /* r4 <- relocation offset */
        beq     relocate_done           /* skip relocation */
        ldr     r2, =__image_copy_end   /* r2 <- SRC &__image_copy_end */
 
@@ -44,9 +44,9 @@ fixloop:
        bne     fixnext
 
        /* relative fix: increase location by offset */
-       add     r0, r0, r9
+       add     r0, r0, r4
        ldr     r1, [r0]
-       add     r1, r1, r9
+       add     r1, r1, r4
        str     r1, [r0]
 fixnext:
        cmp     r2, r3