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.tjernl...@transmode.se>
---
 arch/powerpc/lib/ticks.S |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/lib/ticks.S b/arch/powerpc/lib/ticks.S
index b8d25b7..1781039 100644
--- a/arch/powerpc/lib/ticks.S
+++ b/arch/powerpc/lib/ticks.S
@@ -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
-- 
1.7.3.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to