|
@@ -50,19 +50,24 @@ wait_ticks:
|
|
stwu r1, -16(r1)
|
|
stwu r1, -16(r1)
|
|
mflr r0 /* save link register */
|
|
mflr r0 /* save link register */
|
|
stw r0, 20(r1) /* Use r0 or GDB will be unhappy */
|
|
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 */
|
|
bl get_ticks /* Get start time */
|
|
|
|
|
|
/* Calculate end 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 */
|
|
WATCHDOG_RESET /* Trigger watchdog, if needed */
|
|
1: bl get_ticks /* Get current time */
|
|
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 */
|
|
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
|
|
addi r1,r1,16
|
|
|
|
+ mtlr r0
|
|
blr
|
|
blr
|