Sorry for intruding in to the core. Fixed NoGUI mode in Linux, add back the instruction names as comments in the JIT tables, was a bit hard to find certain instructions.Trying to find a good way to get The JIT dependencies removed in a nice fashion

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3776 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Sonicadvance1
2009-07-13 06:34:12 +00:00
parent d779554ff3
commit 4cfcf9bdd5
14 changed files with 330 additions and 333 deletions
+6
View File
@@ -109,6 +109,7 @@ vars.AddVariables(
BoolVariable('sdlgl', 'Set For Building with SDL GL libs (WIP)', False),
BoolVariable('gltest', 'temp don\'t use (WIP)', False),
BoolVariable('jittest', 'temp don\'t use (WIP)', False),
BoolVariable('nojit', 'Remove entire jit cores', False),
EnumVariable('flavor', 'Choose a build flavor', 'release',
allowed_values = ('release', 'devel', 'debug', 'fastlog', 'prof'),
ignorecase = 2
@@ -310,8 +311,13 @@ conf.Define('GLTEST', env['GLTEST'])
env['JITTEST'] = 0
if env['jittest']:
env['JITTEST'] = 1
env['NOJIT'] = 0
if env['nojit']:
env['NOJIT'] = 1
conf.Define('JITTEST', env['JITTEST'])
conf.Define('NOJIT', env['NOJIT'])
# Creating config.h defines
conf.Define('HAVE_SDL', env['HAVE_SDL'])
-2
View File
@@ -15,8 +15,6 @@
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include <xmmintrin.h>
#include "Common.h"
#include "MathUtil.h"
@@ -356,7 +356,9 @@ void icbi(UGeckoInstruction _inst)
// VERY IMPORTANT when we start linking blocks
// There are a TON of these so hopefully we can make this mechanism
// fast in the JIT
jit.GetBlockCache()->InvalidateCodeRange(address, 0x20);
// ector said that this isn't needed anymore, and that making
// a jit version of this instruction would be easy anyway
//jit.GetBlockCache()->InvalidateCodeRange(address, 0x20);
}
void lbzux(UGeckoInstruction _inst)
@@ -63,21 +63,13 @@ static GekkoOPTemplate primarytable[] =
{28, Interpreter::andi_rc, {"andi_rc", OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_SET_CR0}},
{29, Interpreter::andis_rc, {"andis_rc", OPTYPE_INTEGER, FL_OUT_A | FL_IN_S | FL_SET_CR0}},
#if JITTEST
{32, Interpreter::lwz, {"lwz", OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
{33, Interpreter::lwzu, {"lwzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
{34, Interpreter::lbz, {"lbz", OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
{35, Interpreter::lbzu, {"lbzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
{40, Interpreter::lhz, {"lhz", OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
{41, Interpreter::lhzu, {"lhzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
#else
{32, Interpreter::lwz, {"lwz", OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
{33, Interpreter::lwzu, {"lwzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
{34, Interpreter::lbz, {"lbz", OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
{35, Interpreter::lbzu, {"lbzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
{40, Interpreter::lhz, {"lhz", OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
{41, Interpreter::lhzu, {"lhzu", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
#endif
{42, Interpreter::lha, {"lha", OPTYPE_LOAD, FL_OUT_D | FL_IN_A}},
{43, Interpreter::lhau, {"lhau", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A}},
@@ -213,7 +205,7 @@ static GekkoOPTemplate table31[] =
{470, Interpreter::dcbi, {"dcbi", OPTYPE_DCACHE, 0, 4}},
{758, Interpreter::dcba, {"dcba", OPTYPE_DCACHE, 0, 4}},
{1014, Interpreter::dcbz, {"dcbz", OPTYPE_DCACHE, 0, 4}},
#if JITTEST
//load word
{23, Interpreter::lwzx, {"lwzx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
{55, Interpreter::lwzux, {"lwzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
@@ -229,23 +221,7 @@ static GekkoOPTemplate table31[] =
//load byte
{87, Interpreter::lbzx, {"lbzx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
{119, Interpreter::lbzux, {"lbzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
#else
//load word
{23, Interpreter::lwzx, {"lwzx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
{55, Interpreter::lwzux, {"lwzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
//load halfword
{279, Interpreter::lhzx, {"lhzx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
{311, Interpreter::lhzux, {"lhzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
//load halfword signextend
{343, Interpreter::lhax, {"lhax", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
{375, Interpreter::lhaux, {"lhaux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
//load byte
{87, Interpreter::lbzx, {"lbzx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
{119, Interpreter::lbzux, {"lbzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B}},
#endif
//load byte reverse
{534, Interpreter::lwbrx, {"lwbrx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
{790, Interpreter::lhbrx, {"lhbrx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B}},
@@ -321,11 +297,7 @@ static GekkoOPTemplate table31_2[] =
{10, Interpreter::addcx, {"addcx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT}},
{138, Interpreter::addex, {"addex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
{234, Interpreter::addmex, {"addmex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
#if JITTEST
{202, Interpreter::addzex, {"addzex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
#else
{202, Interpreter::addzex, {"addzex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}},
#endif
{491, Interpreter::divwx, {"divwx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 39}},
{459, Interpreter::divwux, {"divwux", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 39}},
{75, Interpreter::mulhwx, {"mulhwx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 4}},
@@ -36,10 +36,6 @@
#include "../JitCommon/JitCache.h"
#include "../JitCommon/Jit_Tables.h"
#if !defined JITTEST || ! JITTEST
#error JitIL needs JITTEST define
#endif
using namespace Gen;
using namespace PowerPC;
File diff suppressed because it is too large Load Diff
@@ -23,6 +23,7 @@
#include "StringUtil.h"
#include "Interpreter/Interpreter.h"
#include "Interpreter/Interpreter_Tables.h"
#ifndef NOJIT
#include "JitCommon/Jit_Tables.h"
#if defined(_M_IX86) || defined(_M_X64)
@@ -30,6 +31,7 @@
#else
#error Unknown architecture!
#endif
#endif
struct op_inf
{
@@ -158,7 +160,10 @@ void InitTables()
{
// Interpreter ALWAYS needs to be initialized
InterpreterTables::InitTables();
#ifndef NOJIT
// Should be able to do this a better way than defines in this function
JitTables::InitTables();
#endif
}
#define OPLOG
+30 -30
View File
@@ -90,36 +90,36 @@ files = ["ActionReplay.cpp",
"HLE/HLE_Misc.cpp",
"HLE/HLE_OS.cpp",
]
if env['JITTEST']:
files += ["PowerPC/Jit64IL/Jit.cpp",
"PowerPC/Jit64IL/JitAsm.cpp",
"PowerPC/Jit64IL/Jit_Branch.cpp",
"PowerPC/Jit64IL/Jit_Integer.cpp",
"PowerPC/Jit64IL/Jit_FloatingPoint.cpp",
"PowerPC/Jit64IL/Jit_LoadStorePaired.cpp",
"PowerPC/Jit64IL/Jit_Paired.cpp",
"PowerPC/Jit64IL/Jit_LoadStore.cpp",
"PowerPC/Jit64IL/Jit_LoadStoreFloating.cpp",
"PowerPC/Jit64IL/Jit_SystemRegisters.cpp",
"PowerPC/Jit64IL/IR.cpp",
"PowerPC/Jit64IL/IR_X86.cpp",
"PowerPC/JitCommon//Jit_Tables.cpp",
]
else:
files += ["PowerPC/Jit64/Jit.cpp",
"PowerPC/Jit64/JitRegCache.cpp",
"PowerPC/Jit64/JitAsm.cpp",
"PowerPC/Jit64/Jit_Branch.cpp",
"PowerPC/Jit64/Jit_Integer.cpp",
"PowerPC/Jit64/Jit_FloatingPoint.cpp",
"PowerPC/Jit64/Jit_LoadStorePaired.cpp",
"PowerPC/Jit64/Jit_Paired.cpp",
"PowerPC/Jit64/Jit_LoadStore.cpp",
"PowerPC/Jit64/Jit_LoadStoreFloating.cpp",
"PowerPC/Jit64/Jit_SystemRegisters.cpp",
"PowerPC/JitCommon/Jit_Tables.cpp",
]
if not env['NOJIT']:
if env['JITTEST']:
files += ["PowerPC/Jit64IL/Jit.cpp",
"PowerPC/Jit64IL/JitAsm.cpp",
"PowerPC/Jit64IL/Jit_Branch.cpp",
"PowerPC/Jit64IL/Jit_Integer.cpp",
"PowerPC/Jit64IL/Jit_FloatingPoint.cpp",
"PowerPC/Jit64IL/Jit_LoadStorePaired.cpp",
"PowerPC/Jit64IL/Jit_Paired.cpp",
"PowerPC/Jit64IL/Jit_LoadStore.cpp",
"PowerPC/Jit64IL/Jit_LoadStoreFloating.cpp",
"PowerPC/Jit64IL/Jit_SystemRegisters.cpp",
"PowerPC/Jit64IL/IR.cpp",
"PowerPC/Jit64IL/IR_X86.cpp",
"PowerPC/JitCommon//Jit_Tables.cpp",
]
else:
files += ["PowerPC/Jit64/Jit.cpp",
"PowerPC/Jit64/JitRegCache.cpp",
"PowerPC/Jit64/JitAsm.cpp",
"PowerPC/Jit64/Jit_Branch.cpp",
"PowerPC/Jit64/Jit_Integer.cpp",
"PowerPC/Jit64/Jit_FloatingPoint.cpp",
"PowerPC/Jit64/Jit_LoadStorePaired.cpp",
"PowerPC/Jit64/Jit_Paired.cpp",
"PowerPC/Jit64/Jit_LoadStore.cpp",
"PowerPC/Jit64/Jit_LoadStoreFloating.cpp",
"PowerPC/Jit64/Jit_SystemRegisters.cpp",
"PowerPC/JitCommon/Jit_Tables.cpp",
]
if sys.platform == 'win32':
files += [ "stdafx.cpp",
+7 -6
View File
@@ -1,12 +1,13 @@
# -*- python -*-
Import('env')
files = [
'CodeView.cpp',
'MemoryView.cpp',
'DebuggerUIUtil.cpp',
]
files = [] #So it's declared outside the if
if env['HAVE_WX']:
files += [
'CodeView.cpp',
'DebuggerUIUtil.cpp',
'MemoryView.cpp',
]
acenv = env.Clone()
acenv.Append(CXXFLAGS = [ '-fPIC' ])
+3 -2
View File
@@ -3,8 +3,9 @@
#include <stdarg.h>
#ifndef _WIN32
//#include <curses.h>
#include <sys/param.h>
#else
#endif
#include "Common.h"
@@ -208,7 +209,7 @@ int main(int argc, char* argv[])
if (!File::Exists(AppSupportDir) || !File::IsDirectory(AppSupportDir))
PanicAlert("Could not open ~/Library/Application Support");
strlcat(AppSupportDir, "/Dolphin", sizeof(AppSupportDir));
strncat(AppSupportDir, "/Dolphin", sizeof(AppSupportDir));
if (!File::Exists(AppSupportDir))
File::CreateDir(AppSupportDir);
+7 -2
View File
@@ -1,7 +1,12 @@
#include "X11InputBase.h"
#include <string.h>
#include <stdio.h>
#include <ctype.h>
namespace InputCommon
{
#ifdef HAVE_WX
#include <wx/wx.h>
// Taken from wxw source code
KeySym wxCharCodeWXToX(int id)
{
@@ -84,7 +89,7 @@ KeySym wxCharCodeWXToX(int id)
return keySym;
}
#endif
void XKeyToString(unsigned int keycode, char *keyStr) {
switch (keycode) {
@@ -128,4 +133,4 @@ void XKeyToString(unsigned int keycode, char *keyStr) {
sprintf(keyStr, "%c", toupper(keycode));
}
}
}
}
@@ -4,7 +4,6 @@
#include <X11/X.h>
#include <X11/keysym.h>
#include <wx/wx.h>
namespace InputCommon
{
KeySym wxCharCodeWXToX(int id);
@@ -102,14 +102,17 @@ u32 DSPHost_CodeLoaded(const u8 *ptr, int size)
// Always add the ROM.
DSPSymbols::AutoDisassembly(0x8000, 0x9000);
#if defined(HAVE_WX) && HAVE_WX
if (m_DebuggerFrame)
m_DebuggerFrame->Refresh();
#endif
return crc;
}
void DSPHost_UpdateDebugger()
{
#if defined(HAVE_WX) && HAVE_WX
if (m_DebuggerFrame)
m_DebuggerFrame->Refresh();
#endif
}
@@ -1237,7 +1237,7 @@ bool Renderer::SaveRenderTarget(const char *filename, int W, int H, int YOffset)
OSD::AddMessage(StringFromFormat("Saved %i x %i %s\n", W, H, s_sScreenshotName.c_str()).c_str(), 2000);
#else
bool result = SaveTGA(filename, w, h, data);
bool result = SaveTGA(filename, W, H, data);
free(data);
#endif
return result;