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