mirror of https://github.com/PCSX2/pcsx2.git
Created a BSCPropagate class and cleaned out the #define mess in ir5900tables.c. Fixed TLB build compilation errors. Cleaned up some of the headers and #includes use.
git-svn-id: http://pcsx2-playground.googlecode.com/svn/trunk@438 a6443dda-0b58-4228-96e9-037be469359c
This commit is contained in:
parent
e0fc41331e
commit
96fb132655
|
@ -53,7 +53,7 @@ int getFreeCache(u32 mem, int mode, int * way) {
|
||||||
|
|
||||||
if(pCache[i].tag[number] & 0x60) // Valid Dirty
|
if(pCache[i].tag[number] & 0x60) // Valid Dirty
|
||||||
{
|
{
|
||||||
t = (char *)(taddr[number]); // fixme - this should probably be cast to (u8*)
|
t = (u8*)(taddr[number]);
|
||||||
out = (u8*)(t + (mem & 0xFC0));
|
out = (u8*)(t + (mem & 0xFC0));
|
||||||
((u64*)out)[0] = ((u64*)pCache[i].data[number][0].b8._8)[0];
|
((u64*)out)[0] = ((u64*)pCache[i].data[number][0].b8._8)[0];
|
||||||
((u64*)out)[1] = ((u64*)pCache[i].data[number][0].b8._8)[1];
|
((u64*)out)[1] = ((u64*)pCache[i].data[number][0].b8._8)[1];
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
#define __LINUX__
|
#define __LINUX__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <zlib.h> // fixme: is zlib.h stuff used by that many modules that it should be here in common?
|
#include <zlib.h> // fixme: is zlib.h stuff used by that many modules that it should be here in common?
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -32,11 +36,7 @@
|
||||||
#define DONT_USE_GETTEXT
|
#define DONT_USE_GETTEXT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_MSC_VER)
|
||||||
|
|
||||||
#include <windows.h> // fixme: windows.h should be included to windows gui modules only.
|
|
||||||
|
|
||||||
#define pthread_mutex__unlock pthread_mutex_unlock
|
|
||||||
|
|
||||||
#define strnicmp _strnicmp
|
#define strnicmp _strnicmp
|
||||||
#define stricmp _stricmp
|
#define stricmp _stricmp
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
|
|
||||||
#include "PS2Edefs.h"
|
|
||||||
#include "Misc.h"
|
#include "Misc.h"
|
||||||
|
|
||||||
extern FILE *emuLog;
|
extern FILE *emuLog;
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
#include "Debug.h"
|
#include "Debug.h"
|
||||||
#include "R5900.h"
|
#include "R5900.h"
|
||||||
#include "DisASM.h"
|
#include "DisASM.h"
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
AppData gApp;
|
AppData gApp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
26
pcsx2/GS.cpp
26
pcsx2/GS.cpp
|
@ -18,18 +18,22 @@
|
||||||
|
|
||||||
// rewritten by zerofrog to add multithreading/gs caching to GS and VU1
|
// rewritten by zerofrog to add multithreading/gs caching to GS and VU1
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "Common.h"
|
||||||
|
#include "zlib.h"
|
||||||
|
#include "VU.h"
|
||||||
|
#include "GS.h"
|
||||||
|
#include "iR5900.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
@ -201,16 +205,6 @@ static void mutex_unlock( mutex_t& mutex )
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "Common.h"
|
|
||||||
#include "zlib.h"
|
|
||||||
#include "VU.h"
|
|
||||||
|
|
||||||
//#include "ix86/ix86.h"
|
|
||||||
#include "iR5900.h"
|
|
||||||
|
|
||||||
#include "GS.h"
|
|
||||||
|
|
||||||
static wait_event_t g_hGsEvent; // set when path3 is ready to be processed
|
static wait_event_t g_hGsEvent; // set when path3 is ready to be processed
|
||||||
static wait_event_t g_hGSDone; // used to regulate thread startup and gsInit
|
static wait_event_t g_hGSDone; // used to regulate thread startup and gsInit
|
||||||
static thread_t g_hVuGsThread;
|
static thread_t g_hVuGsThread;
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "zlib.h"
|
||||||
|
|
||||||
struct GSRegSIGBLID
|
struct GSRegSIGBLID
|
||||||
{
|
{
|
||||||
u32 SIGID;
|
u32 SIGID;
|
||||||
|
|
|
@ -1216,13 +1216,13 @@ int hwMFIFOWrite(u32 addr, u8 *data, u32 size) {
|
||||||
int s2 = size - s1;
|
int s2 = size - s1;
|
||||||
|
|
||||||
/* it does, so first copy 's1' bytes from 'data' to 'addr' */
|
/* it does, so first copy 's1' bytes from 'data' to 'addr' */
|
||||||
dst = PSM(addr);
|
dst = (u8*)PSM(addr);
|
||||||
if (dst == NULL) return -1;
|
if (dst == NULL) return -1;
|
||||||
Cpu->Clear(addr, s1/4);
|
Cpu->Clear(addr, s1/4);
|
||||||
memcpy_fast(dst, data, s1);
|
memcpy_fast(dst, data, s1);
|
||||||
|
|
||||||
/* and second copy 's2' bytes from '&data[s1]' to 'maddr' */
|
/* and second copy 's2' bytes from '&data[s1]' to 'maddr' */
|
||||||
dst = PSM(psHu32(DMAC_RBOR));
|
dst = (u8*)PSM(psHu32(DMAC_RBOR));
|
||||||
if (dst == NULL) return -1;
|
if (dst == NULL) return -1;
|
||||||
Cpu->Clear(psHu32(DMAC_RBOR), s2/4);
|
Cpu->Clear(psHu32(DMAC_RBOR), s2/4);
|
||||||
memcpy_fast(dst, &data[s1], s2);
|
memcpy_fast(dst, &data[s1], s2);
|
||||||
|
@ -1230,7 +1230,7 @@ int hwMFIFOWrite(u32 addr, u8 *data, u32 size) {
|
||||||
//u32 * tempptr, * tempptr2;
|
//u32 * tempptr, * tempptr2;
|
||||||
|
|
||||||
/* it doesn't, so just copy 'size' bytes from 'data' to 'addr' */
|
/* it doesn't, so just copy 'size' bytes from 'data' to 'addr' */
|
||||||
dst = PSM(addr);
|
dst = (u8*)PSM(addr);
|
||||||
if (dst == NULL) return -1;
|
if (dst == NULL) return -1;
|
||||||
Cpu->Clear(addr, size/4);
|
Cpu->Clear(addr, size/4);
|
||||||
memcpy_fast(dst, data, size);
|
memcpy_fast(dst, data, size);
|
||||||
|
|
|
@ -23,12 +23,12 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "Plugins.h"
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "PsxCommon.h"
|
#include "PsxCommon.h"
|
||||||
#include "CDVDisodrv.h"
|
#include "CDVDisodrv.h"
|
||||||
#include "VUmicro.h"
|
#include "VUmicro.h"
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
#include "RDebug/deci2.h"
|
#include "RDebug/deci2.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -23,12 +23,14 @@
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#else
|
||||||
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "PS2Etypes.h"
|
||||||
|
|
||||||
// compile-time assert
|
// compile-time assert
|
||||||
#ifndef C_ASSERT
|
#ifndef C_ASSERT
|
||||||
#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
|
#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
#ifdef __LINUX__
|
#ifdef __LINUX__
|
||||||
#define CALLBACK
|
#define CALLBACK
|
||||||
#else
|
#else
|
||||||
#include <windows.h>
|
#define CALLBACK __stdcall
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ typedef struct _GSdriverInfo {
|
||||||
void *common;
|
void *common;
|
||||||
} GSdriverInfo;
|
} GSdriverInfo;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WINDOWS_
|
||||||
typedef struct _winInfo { // unsupported values must be set to zero
|
typedef struct _winInfo { // unsupported values must be set to zero
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
HMENU hMenu;
|
HMENU hMenu;
|
||||||
|
@ -538,7 +538,7 @@ typedef int (CALLBACK* _GSsetupRecording)(int, void*);
|
||||||
typedef void (CALLBACK* _GSreset)();
|
typedef void (CALLBACK* _GSreset)();
|
||||||
typedef void (CALLBACK* _GSwriteCSR)(u32 value);
|
typedef void (CALLBACK* _GSwriteCSR)(u32 value);
|
||||||
typedef void (CALLBACK* _GSgetDriverInfo)(GSdriverInfo *info);
|
typedef void (CALLBACK* _GSgetDriverInfo)(GSdriverInfo *info);
|
||||||
#ifdef _WIN32
|
#ifdef _WINDOWS_
|
||||||
typedef s32 (CALLBACK* _GSsetWindowInfo)(winInfo *info);
|
typedef s32 (CALLBACK* _GSsetWindowInfo)(winInfo *info);
|
||||||
#endif
|
#endif
|
||||||
typedef void (CALLBACK* _GSmakeSnapshot)(const char *path);
|
typedef void (CALLBACK* _GSmakeSnapshot)(const char *path);
|
||||||
|
@ -724,7 +724,7 @@ extern _GSsetupRecording GSsetupRecording;
|
||||||
extern _GSreset GSreset;
|
extern _GSreset GSreset;
|
||||||
extern _GSwriteCSR GSwriteCSR;
|
extern _GSwriteCSR GSwriteCSR;
|
||||||
extern _GSgetDriverInfo GSgetDriverInfo;
|
extern _GSgetDriverInfo GSgetDriverInfo;
|
||||||
#ifdef _WIN32
|
#ifdef _WINDOWS_
|
||||||
extern _GSsetWindowInfo GSsetWindowInfo;
|
extern _GSsetWindowInfo GSsetWindowInfo;
|
||||||
#endif
|
#endif
|
||||||
extern _GSfreeze GSfreeze;
|
extern _GSfreeze GSfreeze;
|
||||||
|
|
|
@ -26,10 +26,6 @@
|
||||||
#define __LINUX__
|
#define __LINUX__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ARRAYSIZE
|
#ifndef ARRAYSIZE
|
||||||
#define ARRAYSIZE(x) (sizeof(x)/sizeof((x)[0]))
|
#define ARRAYSIZE(x) (sizeof(x)/sizeof((x)[0]))
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,6 +18,12 @@
|
||||||
#ifndef __PATCH_H__
|
#ifndef __PATCH_H__
|
||||||
#define __PATCH_H__
|
#define __PATCH_H__
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include<windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "PS2Etypes.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// Defines
|
// Defines
|
||||||
//
|
//
|
||||||
|
@ -72,8 +78,7 @@ struct IniPatch
|
||||||
u64 data;
|
u64 data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WINDOWS_
|
||||||
#include<windows.h>
|
|
||||||
struct AppData
|
struct AppData
|
||||||
{
|
{
|
||||||
HWND hWnd; // Main window handle
|
HWND hWnd; // Main window handle
|
||||||
|
|
|
@ -18,12 +18,12 @@
|
||||||
#ifndef __PSXCOMMON_H__
|
#ifndef __PSXCOMMON_H__
|
||||||
#define __PSXCOMMON_H__
|
#define __PSXCOMMON_H__
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "PS2Etypes.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#include "System.h"
|
#include "System.h"
|
||||||
|
|
|
@ -73,12 +73,6 @@ MEMCPY_AMD.CPP
|
||||||
|
|
||||||
// Inline assembly syntax for use with Visual C++
|
// Inline assembly syntax for use with Visual C++
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "Misc.h"
|
#include "Misc.h"
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__x86_64__)
|
#if defined(_MSC_VER) && !defined(__x86_64__)
|
||||||
|
|
|
@ -23,12 +23,12 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "PS2Etypes.h"
|
||||||
|
|
||||||
#include "System.h"
|
#include "System.h"
|
||||||
#include "R5900.h"
|
#include "R5900.h"
|
||||||
#include "Vif.h"
|
#include "Vif.h"
|
||||||
|
@ -1278,24 +1278,24 @@ u32 _recIsRegUsed(EEINST* pinst, int size, u8 xmmtype, u8 reg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _recFillRegister(EEINST* pinst, int type, int reg, int write)
|
void _recFillRegister(EEINST& pinst, int type, int reg, int write)
|
||||||
{
|
{
|
||||||
u32 i = 0;
|
u32 i = 0;
|
||||||
if (write ) {
|
if (write ) {
|
||||||
for(i = 0; i < ARRAYSIZE(pinst->writeType); ++i) {
|
for(i = 0; i < ARRAYSIZE(pinst.writeType); ++i) {
|
||||||
if( pinst->writeType[i] == XMMTYPE_TEMP ) {
|
if( pinst.writeType[i] == XMMTYPE_TEMP ) {
|
||||||
pinst->writeType[i] = type;
|
pinst.writeType[i] = type;
|
||||||
pinst->writeReg[i] = reg;
|
pinst.writeReg[i] = reg;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for(i = 0; i < ARRAYSIZE(pinst->readType); ++i) {
|
for(i = 0; i < ARRAYSIZE(pinst.readType); ++i) {
|
||||||
if( pinst->readType[i] == XMMTYPE_TEMP ) {
|
if( pinst.readType[i] == XMMTYPE_TEMP ) {
|
||||||
pinst->readType[i] = type;
|
pinst.readType[i] = type;
|
||||||
pinst->readReg[i] = reg;
|
pinst.readReg[i] = reg;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -332,7 +332,7 @@ void _recClearInst(EEINST* pinst);
|
||||||
u32 _recIsRegWritten(EEINST* pinst, int size, u8 xmmtype, u8 reg);
|
u32 _recIsRegWritten(EEINST* pinst, int size, u8 xmmtype, u8 reg);
|
||||||
// returns the number of insts + 1 until used (0 if not used)
|
// returns the number of insts + 1 until used (0 if not used)
|
||||||
u32 _recIsRegUsed(EEINST* pinst, int size, u8 xmmtype, u8 reg);
|
u32 _recIsRegUsed(EEINST* pinst, int size, u8 xmmtype, u8 reg);
|
||||||
void _recFillRegister(EEINST* pinst, int type, int reg, int write);
|
void _recFillRegister(EEINST& pinst, int type, int reg, int write);
|
||||||
|
|
||||||
#define EEINST_ISLIVE64(reg) (g_pCurInstInfo->regs[reg] & (EEINST_LIVE0|EEINST_LIVE1))
|
#define EEINST_ISLIVE64(reg) (g_pCurInstInfo->regs[reg] & (EEINST_LIVE0|EEINST_LIVE1))
|
||||||
#define EEINST_ISLIVEXMM(reg) (g_pCurInstInfo->regs[reg] & (EEINST_LIVE0|EEINST_LIVE1|EEINST_LIVE2))
|
#define EEINST_ISLIVEXMM(reg) (g_pCurInstInfo->regs[reg] & (EEINST_LIVE0|EEINST_LIVE1|EEINST_LIVE2))
|
||||||
|
|
|
@ -19,34 +19,22 @@
|
||||||
// stop compiling if NORECBUILD build (only for Visual Studio)
|
// stop compiling if NORECBUILD build (only for Visual Studio)
|
||||||
#if !(defined(_MSC_VER) && defined(PCSX2_NORECBUILD))
|
#if !(defined(_MSC_VER) && defined(PCSX2_NORECBUILD))
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#include "zlib.h"
|
#include "Common.h"
|
||||||
#include "Elfheader.h"
|
|
||||||
#include "Misc.h"
|
|
||||||
#include "System.h"
|
|
||||||
#include "R5900.h"
|
|
||||||
#include "Vif.h"
|
|
||||||
#include "VU.h"
|
#include "VU.h"
|
||||||
#include "VifDma.h"
|
|
||||||
#include "Memory.h"
|
|
||||||
#include "Hw.h"
|
|
||||||
|
|
||||||
#include "ix86/ix86.h"
|
#include "ix86/ix86.h"
|
||||||
#include "iR5900.h"
|
#include "iR5900.h"
|
||||||
|
|
||||||
#include "Counters.h"
|
|
||||||
#include "GS.h"
|
#include "GS.h"
|
||||||
#include "DebugTools/Debug.h"
|
#include "DebugTools/Debug.h"
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
// stop compiling if NORECBUILD build (only for Visual Studio)
|
// stop compiling if NORECBUILD build (only for Visual Studio)
|
||||||
#if !(defined(_MSC_VER) && defined(PCSX2_NORECBUILD))
|
#if !(defined(_MSC_VER) && defined(PCSX2_NORECBUILD))
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4244)
|
#pragma warning(disable:4244)
|
||||||
#pragma warning(disable:4761)
|
#pragma warning(disable:4761)
|
||||||
#endif
|
#endif
|
||||||
|
@ -33,8 +33,6 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#else
|
#else
|
||||||
|
@ -42,21 +40,12 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "System.h"
|
#include "PsxCommon.h"
|
||||||
#include "zlib.h"
|
|
||||||
#include "Memory.h"
|
|
||||||
#include "Misc.h"
|
|
||||||
#include "Vif.h"
|
|
||||||
#include "VU.h"
|
#include "VU.h"
|
||||||
|
|
||||||
#include "R3000A.h"
|
|
||||||
#include "PsxMem.h"
|
|
||||||
|
|
||||||
#include "ix86/ix86.h"
|
#include "ix86/ix86.h"
|
||||||
|
|
||||||
#include "iCore.h"
|
#include "iCore.h"
|
||||||
#include "iR3000A.h"
|
#include "iR3000A.h"
|
||||||
#include "PsxCounters.h"
|
|
||||||
|
|
||||||
u32 g_psxMaxRecMem = 0;
|
u32 g_psxMaxRecMem = 0;
|
||||||
extern char *disRNameGPR[];
|
extern char *disRNameGPR[];
|
||||||
|
|
|
@ -25,23 +25,10 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
#include "PsxCommon.h"
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "System.h"
|
|
||||||
#include "Memory.h"
|
|
||||||
#include "Misc.h"
|
|
||||||
#include "Vif.h"
|
|
||||||
#include "VU.h"
|
#include "VU.h"
|
||||||
|
|
||||||
#include "R3000A.h"
|
|
||||||
#include "PsxMem.h"
|
|
||||||
|
|
||||||
#include "ix86/ix86.h"
|
#include "ix86/ix86.h"
|
||||||
|
|
||||||
#include "iCore.h"
|
#include "iCore.h"
|
||||||
#include "iR3000A.h"
|
#include "iR3000A.h"
|
||||||
|
|
||||||
|
@ -1855,7 +1842,7 @@ void (*rpsxBSC_co[64] )() = {
|
||||||
pinst->regs[reg] |= EEINST_LASTUSE; \
|
pinst->regs[reg] |= EEINST_LASTUSE; \
|
||||||
prev->regs[reg] |= EEINST_LIVE0|EEINST_USED; \
|
prev->regs[reg] |= EEINST_LIVE0|EEINST_USED; \
|
||||||
pinst->regs[reg] |= EEINST_USED; \
|
pinst->regs[reg] |= EEINST_USED; \
|
||||||
_recFillRegister(pinst, XMMTYPE_GPRREG, reg, 0); \
|
_recFillRegister(*pinst, XMMTYPE_GPRREG, reg, 0); \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
#define rpsxpropSetWrite(reg) { \
|
#define rpsxpropSetWrite(reg) { \
|
||||||
|
@ -1864,7 +1851,7 @@ void (*rpsxBSC_co[64] )() = {
|
||||||
pinst->regs[reg] |= EEINST_LASTUSE; \
|
pinst->regs[reg] |= EEINST_LASTUSE; \
|
||||||
pinst->regs[reg] |= EEINST_USED; \
|
pinst->regs[reg] |= EEINST_USED; \
|
||||||
prev->regs[reg] |= EEINST_USED; \
|
prev->regs[reg] |= EEINST_USED; \
|
||||||
_recFillRegister(pinst, XMMTYPE_GPRREG, reg, 1); \
|
_recFillRegister(*pinst, XMMTYPE_GPRREG, reg, 1); \
|
||||||
}
|
}
|
||||||
|
|
||||||
void rpsxpropBSC(EEINST* prev, EEINST* pinst);
|
void rpsxpropBSC(EEINST* prev, EEINST* pinst);
|
||||||
|
|
|
@ -249,4 +249,54 @@ void rec##fn(void) \
|
||||||
int eeRecompileCodeXMM(int xmminfo);
|
int eeRecompileCodeXMM(int xmminfo);
|
||||||
void eeFPURecompileCode(R5900FNPTR_INFO xmmcode, R5900FNPTR fpucode, int xmminfo);
|
void eeFPURecompileCode(R5900FNPTR_INFO xmmcode, R5900FNPTR fpucode, int xmminfo);
|
||||||
|
|
||||||
|
|
||||||
|
// For propagation of BSC stuff.
|
||||||
|
// Code implementations in ir5900tables.c
|
||||||
|
class BSCPropagate
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
EEINST& prev;
|
||||||
|
EEINST& pinst;
|
||||||
|
|
||||||
|
public:
|
||||||
|
BSCPropagate( EEINST& previous, EEINST& pinstance );
|
||||||
|
|
||||||
|
void rprop();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void rpropSPECIAL();
|
||||||
|
void rpropREGIMM();
|
||||||
|
void rpropCP0();
|
||||||
|
void rpropCP1();
|
||||||
|
void rpropCP2();
|
||||||
|
void rpropMMI();
|
||||||
|
void rpropMMI0();
|
||||||
|
void rpropMMI1();
|
||||||
|
void rpropMMI2();
|
||||||
|
void rpropMMI3();
|
||||||
|
|
||||||
|
void rpropSetRead( int reg, int mask );
|
||||||
|
void rpropSetFPURead( int reg, int mask );
|
||||||
|
void rpropSetWrite( int reg, int mask );
|
||||||
|
void rpropSetFPUWrite( int reg, int mask );
|
||||||
|
|
||||||
|
template< int mask >
|
||||||
|
void rpropSetRead( int reg );
|
||||||
|
|
||||||
|
template< int live >
|
||||||
|
void rpropSetWrite0( int reg, int mask );
|
||||||
|
|
||||||
|
void rpropSetFast( int write1, int read1, int read2, int mask );
|
||||||
|
|
||||||
|
template< int low, int hi >
|
||||||
|
void rpropSetLOHI( int write1, int read1, int read2, int mask );
|
||||||
|
|
||||||
|
template< int mask >
|
||||||
|
void rpropSetFPURead( int reg );
|
||||||
|
|
||||||
|
template< int live >
|
||||||
|
void rpropSetFPUWrite0( int reg, int mask );
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
#endif // __IR5900_H__
|
#endif // __IR5900_H__
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -20,12 +20,11 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "PS2Etypes.h"
|
||||||
#include "System.h"
|
#include "System.h"
|
||||||
#include "R5900.h"
|
#include "R5900.h"
|
||||||
#include "Vif.h"
|
#include "Vif.h"
|
||||||
|
|
|
@ -87,7 +87,6 @@ static u32 s_nNextBlock = 0; // next free block in recBlocks
|
||||||
|
|
||||||
extern void (*recBSC[64])();
|
extern void (*recBSC[64])();
|
||||||
extern void (*recBSC_co[64])();
|
extern void (*recBSC_co[64])();
|
||||||
void rpropBSC(EEINST* prev, EEINST* pinst);
|
|
||||||
|
|
||||||
// save states for branches
|
// save states for branches
|
||||||
static u16 s_savex86FpuState, s_saveiCWstate;
|
static u16 s_savex86FpuState, s_saveiCWstate;
|
||||||
|
@ -3013,7 +3012,9 @@ StartRecomp:
|
||||||
for(i = s_nEndBlock; i > startpc; i -= 4 ) {
|
for(i = s_nEndBlock; i > startpc; i -= 4 ) {
|
||||||
cpuRegs.code = *(int *)PSM(i-4);
|
cpuRegs.code = *(int *)PSM(i-4);
|
||||||
pcur[-1] = pcur[0];
|
pcur[-1] = pcur[0];
|
||||||
rpropBSC(pcur-1, pcur);
|
|
||||||
|
BSCPropagate bsc( pcur[-1], pcur[0] );
|
||||||
|
bsc.rprop();
|
||||||
pcur--;
|
pcur--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,13 +24,16 @@ using namespace std;
|
||||||
|
|
||||||
#include "tinyxml/tinyxml.h"
|
#include "tinyxml/tinyxml.h"
|
||||||
|
|
||||||
#include "PS2Etypes.h"
|
|
||||||
#include "Patch.h"
|
#include "Patch.h"
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4996) //ignore the stricmp deprecated warning
|
#pragma warning(disable:4996) //ignore the stricmp deprecated warning
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
extern void SysPrintf(const char *fmt, ...);
|
extern void SysPrintf(const char *fmt, ...);
|
||||||
|
|
||||||
#if !defined(_WIN32) && !defined(__MINGW32__)
|
#if !defined(_WIN32) && !defined(__MINGW32__)
|
||||||
|
|
Loading…
Reference in New Issue