summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>2012-07-16 21:25:40 +0000
committerWolfgang Denk <wd@denx.de>2012-09-02 17:10:21 +0200
commit83f83d19354f9d9b4d5d6fc06dd9c00d2340dab5 (patch)
tree194a3a632a70c399cf0c86c7f16354ce055db42c
parent64a08a9ffc0ff8c9e56b204842a5650c19b48db4 (diff)
downloadblackbird-obmc-uboot-83f83d19354f9d9b4d5d6fc06dd9c00d2340dab5.tar.gz
blackbird-obmc-uboot-83f83d19354f9d9b4d5d6fc06dd9c00d2340dab5.zip
ppc: Create a stack frame for wait_ticks()
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>
-rw-r--r--arch/powerpc/lib/ticks.S7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/lib/ticks.S b/arch/powerpc/lib/ticks.S
index b8d25b7f46..17810395b8 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
OpenPOWER on IntegriCloud