]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
ppc: Create a stack frame for wait_ticks()
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>
Mon, 16 Jul 2012 21:25:40 +0000 (21:25 +0000)
committerWolfgang Denk <wd@denx.de>
Sun, 2 Sep 2012 15:10:21 +0000 (17:10 +0200)
wait_ticks() calls get_ticks() without building a back chain which
makes gdb unhappy when doing back trace. This can also cause
improper memory accesses.

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
arch/powerpc/lib/ticks.S

index b8d25b7f4655fa0c70a9c85ce6c5746a3b9a94d9..17810395b81be36d26843c69292b102d5ce78dac 100644 (file)
@@ -47,7 +47,9 @@ get_ticks:
  */
        .globl  wait_ticks
 wait_ticks:
-       mflr    r8              /* save link register */
+       stwu    r1, -16(r1)
+       mflr    r0              /* save link register */
+       stw     r0, 20(r1)      /* Use r0 or GDB will be unhappy */
        mr      r7, r3          /* save tick count */
        bl      get_ticks       /* Get start time */
 
@@ -61,5 +63,6 @@ wait_ticks:
        subfe.  r3, r3, r6
        bge     1b              /* Loop until time expired */
 
-       mtlr    r8              /* restore link register */
+       mtlr    r0              /* restore link register */
+       addi    r1,r1,16
        blr