OSDN Git Service

powerpc/boot: Make use of REL16 relocs in powerpc/boot/util.S
authorAlan Modra <amodra@gmail.com>
Fri, 27 Nov 2020 00:48:42 +0000 (11:48 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 3 Dec 2020 14:00:44 +0000 (01:00 +1100)
Use bcl 20,31,0f rather than plain bl to avoid unbalancing the link
stack.

Update the code to use REL16 relocs, available for ppc64 in 2009 (and
ppc32 in 2005).

Signed-off-by: Alan Modra <amodra@gmail.com>
[mpe: Incorporate more detail into the change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/boot/util.S

index d03cdb7..6a92376 100644 (file)
@@ -42,14 +42,11 @@ udelay:
         *      (nanoseconds + (timebase_period_ns - 1 )) / timebase_period_ns
         *  timebase_period_ns defaults to 60 (16.6MHz) */
        mflr    r5
-       bl      0f
+       bcl     20,31,0f
 0:     mflr    r6
        mtlr    r5
-       lis     r5,0b@ha
-       addi    r5,r5,0b@l
-       subf    r5,r5,r6        /* In case we're relocated */
-       addis   r5,r5,timebase_period_ns@ha
-       lwz     r5,timebase_period_ns@l(r5)
+       addis   r5,r6,(timebase_period_ns-0b)@ha
+       lwz     r5,(timebase_period_ns-0b)@l(r5)
        add     r4,r4,r5
        addi    r4,r4,-1
        divw    r4,r4,r5        /* BUS ticks */