summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorGlenn Rice <glennricster@gmail.com>2010-11-22 02:42:53 +0000
committerGlenn Rice <glennricster@gmail.com>2010-11-22 02:42:53 +0000
commita3c46990f617c803e552d71d5e08429a600cc993 (patch)
tree2dcf274c91f8a5ea987f740bbe1655e39387acee /Source/Core
parent63c35bf14ab652144c173b12d993daf138c0afd7 (diff)
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
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Common/Src/Thread.cpp6
-rw-r--r--Source/Core/Common/Src/Thread.h6
-rw-r--r--Source/Core/Common/Src/Timer.cpp26
-rw-r--r--Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp5
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 <unistd.h>
+//for gettimeofday and struct time(spec|val)
#include <time.h>
-#if !defined(_POSIX_TIMERS) || _POSIX_TIMERS == 0 || !defined(_POSIX_MONOTONIC_CLOCK)
-#define USE_GETTIMEOFDAY
#include <sys/time.h>
#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 <mmsystem.h>
#include <sys/timeb.h>
#else
-#include <unistd.h>
-#if !defined(_POSIX_TIMERS) || _POSIX_TIMERS == 0 || !defined(_POSIX_MONOTONIC_CLOCK)
-#define USE_GETTIMEOFDAY
#include <sys/time.h>
#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 <stdint.h>
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