gas on cygwin doesn't like section type (althought that's not what the docu says...
[libfirm] / ir / stat / stat_timing.h
index e93d5e6..517f201 100644 (file)
 #ifndef FIRM_STAT_TIMING_H
 #define FIRM_STAT_TIMING_H
 
-#ifdef __i386__
-
-#ifdef __GNUC__
+#if defined(__i386__) || defined(_M_IX86)
 
+#if defined(__GNUC__)
 typedef unsigned long long timing_ticks_t;
 static inline timing_ticks_t __timing_ticks(void) { timing_ticks_t result; __asm__ __volatile__ ("rdtsc" : "=A" (result)); return result; }
-#else
-#if define _MSC_VER
+#elif defined(_MSC_VER)
 /* win32 implementation using rdtsc */
 typedef unsigned __int64 timing_ticks_t;
 static __inline timing_ticks_t __timing_ticks(void) { __asm { rdtsc } }
 #else
 #error need a 64bit int type
 #endif
-#endif
 
 #define timing_ticks(t)              ((t) = __timing_ticks())
 #define timing_ticks_init(t)         ((t) = 0)
@@ -56,7 +53,7 @@ static __inline timing_ticks_t __timing_ticks(void) { __asm { rdtsc } }
 
 typedef struct timeval timing_ticks_t;
 #define timing_ticks(t)              (gettimeofday(&(t), NULL))
-#define timing_ticks_init(t)         ((t).tv_sec = 0, (t).tv_usec = 0)
+#define timing_ticks_init(t)         memset(&(t), 0, sizeof(t))
 
 /*
  * This shamelessly stolen and modified from glibc's