diff options
| author | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2012-07-16 21:25:40 +0000 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2012-09-02 17:10:21 +0200 | 
| commit | 83f83d19354f9d9b4d5d6fc06dd9c00d2340dab5 (patch) | |
| tree | 194a3a632a70c399cf0c86c7f16354ce055db42c | |
| parent | 64a08a9ffc0ff8c9e56b204842a5650c19b48db4 (diff) | |
| download | olio-uboot-2014.01-83f83d19354f9d9b4d5d6fc06dd9c00d2340dab5.tar.xz olio-uboot-2014.01-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.S | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/arch/powerpc/lib/ticks.S b/arch/powerpc/lib/ticks.S index b8d25b7f4..17810395b 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 |