23 lines
368 B
C
23 lines
368 B
C
#include <stdlib.h>
|
|
|
|
inline size_t
|
|
rdtsc_begin(void)
|
|
{
|
|
size_t a, d;
|
|
asm volatile("mfence");
|
|
asm volatile("rdtsc" : "=a"(a), "=d"(d));
|
|
a = (d << 32) | a;
|
|
asm volatile("lfence");
|
|
return a;
|
|
}
|
|
|
|
inline size_t
|
|
rdtsc_end(void)
|
|
{
|
|
size_t a, d;
|
|
asm volatile("lfence");
|
|
asm volatile("rdtsc" : "=a"(a), "=d"(d));
|
|
a = (d << 32) | a;
|
|
asm volatile("mfence");
|
|
return a;
|
|
}
|