This source file includes following definitions.
- pmix_sys_timer_get_cycles
- pmix_sys_timer_get_cycles
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #ifndef PMIX_SYS_ARCH_TIMER_H
20 #define PMIX_SYS_ARCH_TIMER_H 1
21
22 typedef uint64_t pmix_timer_t;
23
24 #if PMIX_GCC_INLINE_ASSEMBLY
25
26
27 #if PMIX_ASSEMBLY_ARCH == PMIX_SPARCV9_64
28
29 static inline pmix_timer_t
30 pmix_sys_timer_get_cycles(void)
31 {
32 pmix_timer_t ret;
33
34 __asm__ __volatile__("rd %%tick, %0" : "=r"(ret));
35
36 return ret;
37 }
38
39 #else
40
41 static inline pmix_timer_t
42 pmix_sys_timer_get_cycles(void)
43 {
44 pmix_timer_t ret;
45 int a, b;
46
47 __asm__ __volatile__("rd %%tick, %0 \n"
48 "srlx %0, 32, %1 " :
49 "=r"(a), "=r"(b)
50 );
51
52 ret = (0x00000000FFFFFFFF & a) | (((pmix_timer_t) b) << 32);
53
54 return ret;
55 }
56
57 #endif
58
59 #define PMIX_HAVE_SYS_TIMER_GET_CYCLES 1
60
61 #else
62
63 #define PMIX_HAVE_SYS_TIMER_GET_CYCLES 0
64
65 #endif
66
67 #endif