mariadb/include/rdtsc.h
Rich Prohaska 746d28bf51 compile with gcc. addresses #1185
git-svn-id: file:///svn/tokudb.1131b+1080a+1185+nostatementexprs@6469 c7de825b-a66e-492c-adef-691d508d4ae1
2013-04-16 23:57:21 -04:00

37 lines
792 B
C

// read the processor time stamp register
#if defined __ICC
#define USE_RDTSC 1
#define rdtsc _rdtsc
#elif defined __i386__
#define USE_RDTSC 1
static inline unsigned long long rdtsc() {
unsigned long hi, lo;
__asm__ __volatile__ ("rdtsc\n"
"movl %%edx,%0\n"
"movl %%eax,%1" : "=r"(hi), "=r"(lo) : : "edx", "eax");
return ((unsigned long long) hi << 32ULL) + (unsigned long long) lo;
}
#elif defined __x86_64__
#define USE_RDTSC 1
static inline unsigned long long rdtsc() {
unsigned long long r;
__asm__ __volatile__ ("rdtsc\n"
"shl $32,%%rdx\n"
"or %%rdx,%%rax\n"
"movq %%rax,%0" : "=r"(r) : : "edx", "eax", "rdx", "rax");
return r;
}
#else
#define USE_RDTSC 0
#endif