Merge pull request #1468 from Tilka/cleanup

Small cleanup
This commit is contained in:
Ryan Houdek 2014-11-02 11:02:35 -06:00
commit 6e43562496
5 changed files with 24 additions and 181 deletions

View File

@ -100,89 +100,34 @@ void XEmitter::ABI_CallFunction(const void *func)
void XEmitter::ABI_CallFunctionC16(const void *func, u16 param1) void XEmitter::ABI_CallFunctionC16(const void *func, u16 param1)
{ {
MOV(32, R(ABI_PARAM1), Imm32((u32)param1)); MOV(32, R(ABI_PARAM1), Imm32((u32)param1));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionCC16(const void *func, u32 param1, u16 param2) void XEmitter::ABI_CallFunctionCC16(const void *func, u32 param1, u16 param2)
{ {
MOV(32, R(ABI_PARAM1), Imm32(param1)); MOV(32, R(ABI_PARAM1), Imm32(param1));
MOV(32, R(ABI_PARAM2), Imm32((u32)param2)); MOV(32, R(ABI_PARAM2), Imm32((u32)param2));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionC(const void *func, u32 param1) void XEmitter::ABI_CallFunctionC(const void *func, u32 param1)
{ {
MOV(32, R(ABI_PARAM1), Imm32(param1)); MOV(32, R(ABI_PARAM1), Imm32(param1));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionCC(const void *func, u32 param1, u32 param2) void XEmitter::ABI_CallFunctionCC(const void *func, u32 param1, u32 param2)
{ {
MOV(32, R(ABI_PARAM1), Imm32(param1)); MOV(32, R(ABI_PARAM1), Imm32(param1));
MOV(32, R(ABI_PARAM2), Imm32(param2)); MOV(32, R(ABI_PARAM2), Imm32(param2));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionCP(const void *func, u32 param1, void *param2) void XEmitter::ABI_CallFunctionCP(const void *func, u32 param1, void *param2)
{ {
MOV(32, R(ABI_PARAM1), Imm32(param1)); MOV(32, R(ABI_PARAM1), Imm32(param1));
MOV(64, R(ABI_PARAM2), Imm64((u64)param2)); MOV(64, R(ABI_PARAM2), Imm64((u64)param2));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionCCC(const void *func, u32 param1, u32 param2, u32 param3) void XEmitter::ABI_CallFunctionCCC(const void *func, u32 param1, u32 param2, u32 param3)
@ -190,18 +135,7 @@ void XEmitter::ABI_CallFunctionCCC(const void *func, u32 param1, u32 param2, u32
MOV(32, R(ABI_PARAM1), Imm32(param1)); MOV(32, R(ABI_PARAM1), Imm32(param1));
MOV(32, R(ABI_PARAM2), Imm32(param2)); MOV(32, R(ABI_PARAM2), Imm32(param2));
MOV(32, R(ABI_PARAM3), Imm32(param3)); MOV(32, R(ABI_PARAM3), Imm32(param3));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionCCP(const void *func, u32 param1, u32 param2, void *param3) void XEmitter::ABI_CallFunctionCCP(const void *func, u32 param1, u32 param2, void *param3)
@ -209,18 +143,7 @@ void XEmitter::ABI_CallFunctionCCP(const void *func, u32 param1, u32 param2, voi
MOV(32, R(ABI_PARAM1), Imm32(param1)); MOV(32, R(ABI_PARAM1), Imm32(param1));
MOV(32, R(ABI_PARAM2), Imm32(param2)); MOV(32, R(ABI_PARAM2), Imm32(param2));
MOV(64, R(ABI_PARAM3), Imm64((u64)param3)); MOV(64, R(ABI_PARAM3), Imm64((u64)param3));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionCCCP(const void *func, u32 param1, u32 param2, u32 param3, void *param4) void XEmitter::ABI_CallFunctionCCCP(const void *func, u32 param1, u32 param2, u32 param3, void *param4)
@ -229,36 +152,14 @@ void XEmitter::ABI_CallFunctionCCCP(const void *func, u32 param1, u32 param2, u3
MOV(32, R(ABI_PARAM2), Imm32(param2)); MOV(32, R(ABI_PARAM2), Imm32(param2));
MOV(32, R(ABI_PARAM3), Imm32(param3)); MOV(32, R(ABI_PARAM3), Imm32(param3));
MOV(64, R(ABI_PARAM4), Imm64((u64)param4)); MOV(64, R(ABI_PARAM4), Imm64((u64)param4));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionPC(const void *func, void *param1, u32 param2) void XEmitter::ABI_CallFunctionPC(const void *func, void *param1, u32 param2)
{ {
MOV(64, R(ABI_PARAM1), Imm64((u64)param1)); MOV(64, R(ABI_PARAM1), Imm64((u64)param1));
MOV(32, R(ABI_PARAM2), Imm32(param2)); MOV(32, R(ABI_PARAM2), Imm32(param2));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionPPC(const void *func, void *param1, void *param2, u32 param3) void XEmitter::ABI_CallFunctionPPC(const void *func, void *param1, void *param2, u32 param3)
@ -266,18 +167,7 @@ void XEmitter::ABI_CallFunctionPPC(const void *func, void *param1, void *param2,
MOV(64, R(ABI_PARAM1), Imm64((u64)param1)); MOV(64, R(ABI_PARAM1), Imm64((u64)param1));
MOV(64, R(ABI_PARAM2), Imm64((u64)param2)); MOV(64, R(ABI_PARAM2), Imm64((u64)param2));
MOV(32, R(ABI_PARAM3), Imm32(param3)); MOV(32, R(ABI_PARAM3), Imm32(param3));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
// Pass a register as a parameter. // Pass a register as a parameter.
@ -285,36 +175,14 @@ void XEmitter::ABI_CallFunctionR(const void *func, X64Reg reg1)
{ {
if (reg1 != ABI_PARAM1) if (reg1 != ABI_PARAM1)
MOV(32, R(ABI_PARAM1), R(reg1)); MOV(32, R(ABI_PARAM1), R(reg1));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
// Pass two registers as parameters. // Pass two registers as parameters.
void XEmitter::ABI_CallFunctionRR(const void *func, X64Reg reg1, X64Reg reg2) void XEmitter::ABI_CallFunctionRR(const void *func, X64Reg reg1, X64Reg reg2)
{ {
MOVTwo(64, ABI_PARAM1, reg1, ABI_PARAM2, reg2); MOVTwo(64, ABI_PARAM1, reg1, ABI_PARAM2, reg2);
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::MOVTwo(int bits, Gen::X64Reg dst1, Gen::X64Reg src1, Gen::X64Reg dst2, Gen::X64Reg src2) void XEmitter::MOVTwo(int bits, Gen::X64Reg dst1, Gen::X64Reg src1, Gen::X64Reg dst2, Gen::X64Reg src2)
@ -344,35 +212,13 @@ void XEmitter::ABI_CallFunctionAC(const void *func, const Gen::OpArg &arg1, u32
if (!arg1.IsSimpleReg(ABI_PARAM1)) if (!arg1.IsSimpleReg(ABI_PARAM1))
MOV(32, R(ABI_PARAM1), arg1); MOV(32, R(ABI_PARAM1), arg1);
MOV(32, R(ABI_PARAM2), Imm32(param2)); MOV(32, R(ABI_PARAM2), Imm32(param2));
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }
void XEmitter::ABI_CallFunctionA(const void *func, const Gen::OpArg &arg1) void XEmitter::ABI_CallFunctionA(const void *func, const Gen::OpArg &arg1)
{ {
if (!arg1.IsSimpleReg(ABI_PARAM1)) if (!arg1.IsSimpleReg(ABI_PARAM1))
MOV(32, R(ABI_PARAM1), arg1); MOV(32, R(ABI_PARAM1), arg1);
u64 distance = u64(func) - (u64(code) + 5); ABI_CallFunction(func);
if (distance >= 0x0000000080000000ULL &&
distance < 0xFFFFFFFF80000000ULL)
{
// Far call
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
}
else
{
CALL(func);
}
} }

View File

@ -83,7 +83,6 @@ void Jit64AsmRoutineManager::Generate()
dispatcherNoCheck = GetCodePtr(); dispatcherNoCheck = GetCodePtr();
MOV(32, R(RSCRATCH), PPCSTATE(pc)); MOV(32, R(RSCRATCH), PPCSTATE(pc));
dispatcherPcInRSCRATCH = GetCodePtr();
u32 mask = 0; u32 mask = 0;
FixupBranch no_mem; FixupBranch no_mem;

View File

@ -20,9 +20,7 @@ public:
const u8 *dispatcherMispredictedBLR; const u8 *dispatcherMispredictedBLR;
const u8 *dispatcher; const u8 *dispatcher;
const u8 *dispatcherNoCheck; const u8 *dispatcherNoCheck;
const u8 *dispatcherPcInRSCRATCH;
const u8 *dispatchPcInRSCRATCH;
const u8 *doTiming; const u8 *doTiming;
const u8 *frsqrte; const u8 *frsqrte;

View File

@ -55,10 +55,10 @@ void Host_Message(int Id)
} }
} }
void* windowHandle; static void* s_window_handle;
void* Host_GetRenderHandle() void* Host_GetRenderHandle()
{ {
return windowHandle; return s_window_handle;
} }
void Host_UpdateTitle(const std::string& title) void Host_UpdateTitle(const std::string& title)
@ -157,7 +157,7 @@ class PlatformX11 : public Platform
XSetWMProtocols(dpy, win, wmProtocols, 1); XSetWMProtocols(dpy, win, wmProtocols, 1);
XMapRaised(dpy, win); XMapRaised(dpy, win);
XFlush(dpy); XFlush(dpy);
windowHandle = (void *) win; s_window_handle = (void*) win;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDisableScreenSaver) if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDisableScreenSaver)
X11Utils::InhibitScreensaver(dpy, win, true); X11Utils::InhibitScreensaver(dpy, win, true);

View File

@ -51,7 +51,7 @@ static BITMAPINFOHEADER s_bitmap;
// so we have to save a frame and always be behind // so we have to save a frame and always be behind
static void* s_stored_frame = nullptr; static void* s_stored_frame = nullptr;
static u64 s_stored_frame_size = 0; static u64 s_stored_frame_size = 0;
bool b_start_dumping = false; static bool s_start_dumping = false;
bool AVIDump::Start(HWND hWnd, int w, int h) bool AVIDump::Start(HWND hWnd, int w, int h)
{ {
@ -171,7 +171,7 @@ void AVIDump::Stop()
// store one copy of the last video frame, CFR case // store one copy of the last video frame, CFR case
if (s_stream_compressed) if (s_stream_compressed)
AVIStreamWrite(s_stream_compressed, s_frame_count++, 1, GetFrame(), s_bitmap.biSizeImage, AVIIF_KEYFRAME, nullptr, &s_byte_buffer); AVIStreamWrite(s_stream_compressed, s_frame_count++, 1, GetFrame(), s_bitmap.biSizeImage, AVIIF_KEYFRAME, nullptr, &s_byte_buffer);
b_start_dumping = false; s_start_dumping = false;
CloseFile(); CloseFile();
s_file_count = 0; s_file_count = 0;
NOTICE_LOG(VIDEO, "Stop"); NOTICE_LOG(VIDEO, "Stop");
@ -228,10 +228,10 @@ void AVIDump::AddFrame(const u8* data, int w, int h)
u64 one_cfr = SystemTimers::GetTicksPerSecond() / VideoInterface::TargetRefreshRate; u64 one_cfr = SystemTimers::GetTicksPerSecond() / VideoInterface::TargetRefreshRate;
int nplay = 0; int nplay = 0;
s64 delta; s64 delta;
if (!b_start_dumping && s_last_frame <= SystemTimers::GetTicksPerSecond()) if (!s_start_dumping && s_last_frame <= SystemTimers::GetTicksPerSecond())
{ {
delta = CoreTiming::GetTicks(); delta = CoreTiming::GetTicks();
b_start_dumping = true; s_start_dumping = true;
} }
else else
{ {
@ -334,7 +334,7 @@ static int s_width;
static int s_height; static int s_height;
static int s_size; static int s_size;
static u64 s_last_frame; static u64 s_last_frame;
bool b_start_dumping = false; static bool s_start_dumping = false;
static u64 s_last_pts; static u64 s_last_pts;
static void InitAVCodec() static void InitAVCodec()
@ -446,11 +446,11 @@ void AVIDump::AddFrame(const u8* data, int width, int height)
int error = 0; int error = 0;
u64 delta; u64 delta;
s64 last_pts; s64 last_pts;
if (!b_start_dumping && s_last_frame <= SystemTimers::GetTicksPerSecond()) if (!s_start_dumping && s_last_frame <= SystemTimers::GetTicksPerSecond())
{ {
delta = CoreTiming::GetTicks(); delta = CoreTiming::GetTicks();
last_pts = AV_NOPTS_VALUE; last_pts = AV_NOPTS_VALUE;
b_start_dumping = true; s_start_dumping = true;
} }
else else
{ {