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
This commit is contained in:
Glenn Rice 2010-11-22 02:42:53 +00:00
parent 63c35bf14a
commit a3c46990f6
4 changed files with 11 additions and 32 deletions

View file

@ -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);
}

View file

@ -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

View file

@ -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;

View file

@ -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