mariadb/toku_include/rdtsc.h
Yoni Fogel 001bc6f4c3 Addresses #1976 refs[t:1976] Add warnings for code hygiene that windows compiler requires.
Cleaned up code to remove warnings.

git-svn-id: file:///svn/toku/tokudb@14306 c7de825b-a66e-492c-adef-691d508d4ae1
2013-04-16 23:58:00 -04:00

37 lines
800 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(void) {
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(void) {
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