/shark/trunk/oslib/ll/i386/advtimer.h |
---|
35,16 → 35,26 |
#define rdtsc(low,high) \ |
__asm__ __volatile__("xorl %%eax,%%eax\n\t" \ |
"cpuid\n\t" \ |
"rdtsc" \ |
: "=a" (low), "=d" (high) \ |
"cpuid\n\t" \ |
"rdtsc\n\t" \ |
"movl %%eax,%%esi\n\t" \ |
"movl %%edx,%%edi\n\t" \ |
"xorl %%eax,%%eax\n\t" \ |
"cpuid" \ |
: "=S" (low), "=D" (high) \ |
:: "ebx", "ecx") |
#define rdtscll(val) \ |
__asm__ __volatile__("xorl %%eax,%%eax\n\t" \ |
"cpuid\n\t" \ |
"rdtsc" \ |
: "=A" (val) \ |
"cpuid\n\t" \ |
"rdtsc\n\t" \ |
"pushl %%eax\n\t" \ |
"pushl %%edx\n\t" \ |
"xorl %%eax,%%eax\n\t" \ |
"cpuid\n\t" \ |
"popl %%edx\n\t" \ |
"popl %%eax\n\t" \ |
: "=A" (val) \ |
:: "ebx","ecx") |
/* RTC */ |