Skip to contentSkip to conversation

readX_check() performance evaluation

PATCH In review Hironobu Ishii 2 participants 2 messages Jan 28, 2004

lore
Share & tools
lore
#0 lore raw

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;
 }
 
#1 lore raw
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