RDTSC命令で64bitの値を取得

LinuxKernelのinclude/asm-x86_64/msr.hより
カーネルのバージョンは2.6.17です。

#define rdtscll(val) do { \
unsigned int __a,__d; \
asm volatile("rdtsc" : "=a" (__a), "=d" (__d)); \
(val) = ((unsigned long)__a) | (((unsigned long)__d)<<32); \
} while(0)


---使い方---
volatile unsigned long long value;
rdtscll(value);
printf("%llu\n", value);