readX_check() performance evaluation
PATCH 3/4 readX_check() performance evaluation
This is a patch for rawread 1.0.3.
Original rawread 1.0.3 depends on i386.
Thanks,
Hironobu Ishii
rawread.c 2004-01-27 23:26:24.406717936 +0900 renamed from rawread.c.old 2004-01-22 19:33:43.000000000 +0900 +8 -2
@@ -94,8 +94,14 @@ __inline__ unsigned long long int rdtsc() { - unsigned long long int x; - __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); + unsigned long long int x; +#if __i386__ + __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); +#elif __ia64__ + __asm__ volatile ("mov r8 = ar44"); +#else + #error "Please write your own rdtsc()" +#endif return x; }
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Hironobu Ishii
Hironobu> This is a patch for rawread 1.0.3. Hironobu> Original rawread 1.0.3 depends on i386.
Hironobu> --- rawread.c.old 2004-01-22 19:33:43.000000000 +0900 Hironobu> +++ rawread.c 2004-01-27 23:26:24.406717936 +0900 Hironobu> @@ -94,8 +94,14 @@
Hironobu> __inline__ unsigned long long int rdtsc()
Hironobu> {
Hironobu> - unsigned long long int x;
Hironobu> - __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
Hironobu> + unsigned long long int x;
Hironobu> +#if __i386__
Hironobu> + __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
Hironobu> +#elif __ia64__
Hironobu> + __asm__ volatile ("mov r8 = ar44");
Hironobu> +#else
Hironobu> + #error "Please write your own rdtsc()"
Hironobu> +#endif
Hironobu> return x;
Hironobu> }Inline assembly doesn't work with the Intel compiler on ia64. I suggest to use ia64_get_itc() defined in <asm/delay.h> instead.
--david