From a3c46990f617c803e552d71d5e08429a600cc993 Mon Sep 17 00:00:00 2001 From: Glenn Rice Date: Mon, 22 Nov 2010 02:42:53 +0000 Subject: [PATCH] Revert to gettimeofday on posix systems. I give up. Temporary fix for OSX in JitIL.cpp This revision should build on OSX again. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6457 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/Thread.cpp | 6 ----- Source/Core/Common/Src/Thread.h | 6 +---- Source/Core/Common/Src/Timer.cpp | 26 ++++--------------- .../Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp | 5 ++++ 4 files changed, 11 insertions(+), 32 deletions(-) diff --git a/Source/Core/Common/Src/Thread.cpp b/Source/Core/Common/Src/Thread.cpp index aeee52ca22..76de6cfbd3 100644 --- a/Source/Core/Common/Src/Thread.cpp +++ b/Source/Core/Common/Src/Thread.cpp @@ -493,15 +493,9 @@ namespace Common if (timeout != INFINITE) { memset(&wait, 0, sizeof(wait)); -#ifdef USE_GETTIMEOFDAY struct timeval now; gettimeofday(&now, NULL); wait.tv_nsec = (now.tv_usec + (timeout % 1000)) * 1000; -#else - struct timespec now; - clock_gettime(CLOCK_MONOTONIC_RAW, &now); - wait.tv_nsec = now.tv_nsec + (timeout % 1000) * 1000000; -#endif wait.tv_sec = now.tv_sec + (timeout / 1000); } diff --git a/Source/Core/Common/Src/Thread.h b/Source/Core/Common/Src/Thread.h index e93cf20160..81284ce94d 100644 --- a/Source/Core/Common/Src/Thread.h +++ b/Source/Core/Common/Src/Thread.h @@ -60,14 +60,10 @@ #define INFINITE 0xffffffff #endif -//for (clock_gettime|gettimeofday) and struct time(spec|val) -#include +//for gettimeofday and struct time(spec|val) #include -#if !defined(_POSIX_TIMERS) || _POSIX_TIMERS == 0 || !defined(_POSIX_MONOTONIC_CLOCK) -#define USE_GETTIMEOFDAY #include #endif -#endif namespace Common diff --git a/Source/Core/Common/Src/Timer.cpp b/Source/Core/Common/Src/Timer.cpp index 1533ae71b5..bfa7fc7536 100644 --- a/Source/Core/Common/Src/Timer.cpp +++ b/Source/Core/Common/Src/Timer.cpp @@ -22,12 +22,8 @@ #include #include #else -#include -#if !defined(_POSIX_TIMERS) || _POSIX_TIMERS == 0 || !defined(_POSIX_MONOTONIC_CLOCK) -#define USE_GETTIMEOFDAY #include #endif -#endif #include "Common.h" #include "Timer.h" @@ -40,14 +36,11 @@ u32 Timer::GetTimeMs() { #ifdef _WIN32 return timeGetTime(); -#elif defined USE_GETTIMEOFDAY +#else + printf("using gettimeofday\n"); struct timeval t; (void)gettimeofday(&t, NULL); return ((u32)(t.tv_sec * 1000 + t.tv_usec / 1000)); -#else - struct timespec t; - (void)clock_gettime(CLOCK_MONOTONIC_RAW, &t); - return ((u32)(t.tv_sec * 1000 + t.tv_nsec / 1000000)); #endif } @@ -213,14 +206,10 @@ std::string Timer::GetTimeFormatted() struct timeb tp; (void)::ftime(&tp); sprintf(formattedTime, "%s:%03i", tmp, tp.millitm); -#elif defined USE_GETTIMEOFDAY +#else struct timeval t; (void)gettimeofday(&t, NULL); sprintf(formattedTime, "%s:%03d", tmp, (int)(t.tv_usec / 1000)); -#else - struct timespec t; - (void)clock_gettime(CLOCK_REALTIME, &t); - sprintf(formattedTime, "%s:%03d", tmp, (int)(t.tv_nsec / 1000000)); #endif return std::string(formattedTime); @@ -233,12 +222,9 @@ double Timer::GetDoubleTime() #ifdef _WIN32 struct timeb tp; (void)::ftime(&tp); -#elif defined USE_GETTIMEOFDAY +#else struct timeval t; (void)gettimeofday(&t, NULL); -#else - struct timespec t; - (void)clock_gettime(CLOCK_REALTIME, &t); #endif // Get continuous timestamp u64 TmpSeconds = Common::Timer::GetTimeSinceJan1970(); @@ -253,10 +239,8 @@ double Timer::GetDoubleTime() u32 Seconds = (u32)TmpSeconds; #ifdef _WIN32 double ms = tp.millitm / 1000.0 / 1000.0; -#elif defined USE_GETTIMEOFDAY - double ms = t.tv_usec / 1000000.0; #else - double ms = t.tv_nsec / 1000000000.0; + double ms = t.tv_usec / 1000000.0; #endif double TmpTime = Seconds + ms; diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp index ee0b7d1f89..bf586f04ea 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp @@ -165,11 +165,16 @@ ps_adds1 #include static inline uint64_t __rdtsc() { +#ifdef __linux__ uint32_t lo, hi; __asm__ __volatile__ ("xorl %%eax,%%eax \n cpuid" ::: "%rax", "%rbx", "%rcx", "%rdx"); __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi)); return (uint64_t)hi << 32 | lo; +#else + // TODO: Figure out what is wrong with clobbering the rbx register on OSX + return 0; +#endif } #endif