blob: 19faed49dc112479bf0200e98442201764557204 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include "asm/asmdefs.h"
#include "asm/processor.h"
/*
* unsigned long long _get_ticks(void);
*/
_GLOBAL(_get_ticks):
1: mftbu r3
mftb r4
mftbu r5
cmpw 0,r3,r5
bne 1b
blr
/*
* Delay for a number of ticks
*/
_GLOBAL(_wait_ticks):
mflr r8 /* save link register */
mr r7, r3 /* save tick count */
bl BRANCH_LABEL(_get_ticks) /* Get start time */
/* Calculate end time */
addc r7, r4, r7 /* Compute end time lower */
addze r6, r3 /* and end time upper */
1: bl BRANCH_LABEL(_get_ticks) /* Get current time */
subfc r4, r4, r7 /* Subtract current time from end time */
subfe. r3, r3, r6
bge 1b /* Loop until time expired */
mtlr r8 /* restore link register */
blr
|