Use atomic operations on Android + warning fixes.

This commit is contained in:
Unknown W. Brackets 2013-08-12 08:51:19 -07:00
parent 24203b1a5d
commit 49ab98c7fd
5 changed files with 15 additions and 6 deletions

View file

@ -141,7 +141,7 @@ namespace MIPSAnalyst
int rd = MIPS_GET_RD(op);
if (
((info & IN_RS) && !(info & IN_RS_ADDR) && (rs == reg)) ||
((info & IN_RS) && (info & IN_RS_ADDR) == IN_RS && (rs == reg)) ||
((info & IN_RT) && (rt == reg)))
{
if (regAnal[reg].firstRead == -1)

View file

@ -114,6 +114,9 @@ namespace MIPSCodeUtils
sure = _RS == 0;
takeBranch = false;
break;
default:
sure = false;
}
if (sure && takeBranch)

View file

@ -558,7 +558,7 @@ void GPUCommon::ProcessEvent(GPUEvent ev) {
break;
default:
ERROR_LOG(G3D, "Unexpected GPU event type: %d", ev);
ERROR_LOG(G3D, "Unexpected GPU event type: %d", (int)ev);
}
}

View file

@ -4,7 +4,9 @@
#include "Core/ThreadEventQueue.h"
#include "GPU/GPUInterface.h"
#ifdef _M_SSE
#if defined(ANDROID)
#include <atomic>
#elif defined(_M_SSE)
#include <xmmintrin.h>
#pragma warning(disable:4799)
#endif
@ -43,7 +45,7 @@ public:
virtual void ReapplyGfxState();
virtual u64 GetTickEstimate() {
#if defined(_M_X64)
#if defined(_M_X64) || defined(ANDROID)
return curTickEst_;
#elif defined(_M_SSE)
__m64 result = *(__m64 *)&curTickEst_;
@ -105,11 +107,15 @@ protected:
bool interruptsEnabled_;
// For CPU/GPU sync.
#ifdef ANDROID
std::atomic<u64> curTickEst_;
#else
volatile MEMORY_ALIGNED16(u64) curTickEst_;
recursive_mutex curTickEstLock_;
#endif
virtual void UpdateTickEstimate(u64 value) {
#if defined(_M_X64)
#if defined(_M_X64) || defined(ANDROID)
curTickEst_ = value;
#elif defined(_M_SSE)
__m64 result = *(__m64 *)&value;

View file

@ -142,7 +142,7 @@ bool DisasmVFP(uint32_t op, char *text) {
if ((op & 0xFFF) != 0xA10)
break;
if (op == 0xEEF1FA10) {
sprintf(text, "VMRS APSR", cond);
sprintf(text, "VMRS%s APSR", cond);
} else {
sprintf(text, "VMRS%s r%i", cond, (op >> 12) & 0xF);
}