diff options
author | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2012-07-16 21:25:40 (GMT) |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2012-09-02 15:10:21 (GMT) |
commit | 83f83d19354f9d9b4d5d6fc06dd9c00d2340dab5 (patch) | |
tree | 194a3a632a70c399cf0c86c7f16354ce055db42c /arch/powerpc/lib | |
parent | 64a08a9ffc0ff8c9e56b204842a5650c19b48db4 (diff) | |
download | u-boot-83f83d19354f9d9b4d5d6fc06dd9c00d2340dab5.tar.xz |
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>
Diffstat (limited to 'arch/powerpc/lib')
-rw-r--r-- | 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 |