diff options
Diffstat (limited to 'arch/powerpc/lib/ticks.S')
| -rw-r--r-- | arch/powerpc/lib/ticks.S | 17 | 
1 files changed, 11 insertions, 6 deletions
| diff --git a/arch/powerpc/lib/ticks.S b/arch/powerpc/lib/ticks.S index 17810395b..63114bb0c 100644 --- a/arch/powerpc/lib/ticks.S +++ b/arch/powerpc/lib/ticks.S @@ -50,19 +50,24 @@ wait_ticks:  	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 */ +	stw	r14, 12(r1)	/* save used registers */ +	stw	r15, 8(r1) +	mr	r14, r3		/* save tick count */  	bl	get_ticks	/* Get start time */  	/* Calculate end time */ -	addc    r7, r4, r7	/* Compute end time lower */ -	addze	r6, r3		/*     and end time upper */ +	addc    r14, r4, r14	/* Compute end time lower */ +	addze	r15, r3		/*     and end time upper */  	WATCHDOG_RESET		/* Trigger watchdog, if needed */  1:	bl	get_ticks	/* Get current time */ -	subfc	r4, r4, r7	/* Subtract current time from end time */ -	subfe.	r3, r3, r6 +	subfc	r4, r4, r14	/* Subtract current time from end time */ +	subfe.	r3, r3, r15  	bge	1b		/* Loop until time expired */ -	mtlr	r0		/* restore link register */ +	lwz     r15, 8(r1)	/* restore saved registers */ +	lwz     r14, 12(r1) +	lwz     r0, 20(r1)  	addi	r1,r1,16 +	mtlr	r0  	blr |