Blame SOURCES/mysql-s390-tsc.patch

6f9931
Support s390/s390x in performance schema's cycle-counting functions.
6f9931
Filed upstream at http://bugs.mysql.com/bug.php?id=59953
6f9931
6f9931
6f9931
diff -Naur mysql-5.5.8.orig/include/my_rdtsc.h mysql-5.5.8/include/my_rdtsc.h
6f9931
--- mysql-5.5.8.orig/include/my_rdtsc.h	2010-12-03 12:58:24.000000000 -0500
6f9931
+++ mysql-5.5.8/include/my_rdtsc.h	2011-02-04 11:16:45.431459913 -0500
6f9931
@@ -124,6 +124,7 @@
6f9931
 #define MY_TIMER_ROUTINE_MACH_ABSOLUTE_TIME      25
6f9931
 #define MY_TIMER_ROUTINE_GETSYSTEMTIMEASFILETIME 26
6f9931
 #define MY_TIMER_ROUTINE_ASM_SUNPRO_X86_64       27
6f9931
+#define MY_TIMER_ROUTINE_ASM_S390                28
6f9931
 
6f9931
 #endif
6f9931
 
6f9931
diff -Naur mysql-5.5.8.orig/mysys/my_rdtsc.c mysql-5.5.8/mysys/my_rdtsc.c
6f9931
--- mysql-5.5.8.orig/mysys/my_rdtsc.c	2010-12-03 12:58:26.000000000 -0500
6f9931
+++ mysql-5.5.8/mysys/my_rdtsc.c	2011-02-04 11:16:45.432465577 -0500
6f9931
@@ -224,6 +224,13 @@
6f9931
     clock_gettime(CLOCK_SGI_CYCLE, &tp);
6f9931
     return (ulonglong) tp.tv_sec * 1000000000 + (ulonglong) tp.tv_nsec;
6f9931
   }
6f9931
+#elif defined(__GNUC__) && defined(__s390__)
6f9931
+  /* covers both s390 and s390x */
6f9931
+  {
6f9931
+    ulonglong result;
6f9931
+    __asm__ __volatile__ ("stck %0" : "=Q" (result) : : "cc");
6f9931
+    return result;
6f9931
+  }
6f9931
 #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME)
6f9931
   /* gethrtime may appear as either cycle or nanosecond counter */
6f9931
   return (ulonglong) gethrtime();
6f9931
@@ -533,6 +540,8 @@
6f9931
   mti->cycles.routine= MY_TIMER_ROUTINE_ASM_GCC_SPARC32;
6f9931
 #elif defined(__sgi) && defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_SGI_CYCLE)
6f9931
   mti->cycles.routine= MY_TIMER_ROUTINE_SGI_CYCLE;
6f9931
+#elif defined(__GNUC__) && defined(__s390__)
6f9931
+  mti->cycles.routine= MY_TIMER_ROUTINE_ASM_S390;
6f9931
 #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME)
6f9931
   mti->cycles.routine= MY_TIMER_ROUTINE_GETHRTIME;
6f9931
 #else