From f544a87b2fcb326f11bfd82eb6e0d09b6ad4ef98 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 27 Jun 2014 23:21:22 -0700 Subject: [PATCH] jit: Initialize startDefaultPrefix when switching. --- Core/MIPS/ARM/ArmJit.cpp | 2 +- Core/MIPS/MIPS.cpp | 4 ++++ Core/MIPS/MIPS.h | 2 ++ Core/MIPS/x86/Jit.cpp | 5 ++--- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Core/MIPS/ARM/ArmJit.cpp b/Core/MIPS/ARM/ArmJit.cpp index bf79bf23d3..3e6d8134b4 100644 --- a/Core/MIPS/ARM/ArmJit.cpp +++ b/Core/MIPS/ARM/ArmJit.cpp @@ -88,7 +88,7 @@ Jit::Jit(MIPSState *mips) : blocks(mips, this), gpr(mips, &jo), fpr(mips), mips_ AllocCodeSpace(1024 * 1024 * 16); // 32MB is the absolute max because that's what an ARM branch instruction can reach, backwards and forwards. GenerateFixedCode(); - js.startDefaultPrefix = true; + js.startDefaultPrefix = mips_->HasDefaultPrefix(); } void Jit::DoState(PointerWrap &p) diff --git a/Core/MIPS/MIPS.cpp b/Core/MIPS/MIPS.cpp index a59e4d0382..35cab67f93 100644 --- a/Core/MIPS/MIPS.cpp +++ b/Core/MIPS/MIPS.cpp @@ -218,6 +218,10 @@ void MIPSState::Init() { rng.Init(0x1337); } +bool MIPSState::HasDefaultPrefix() const { + return vfpuCtrl[VFPU_CTRL_SPREFIX] == 0xe4 && vfpuCtrl[VFPU_CTRL_TPREFIX] == 0xe4 && vfpuCtrl[VFPU_CTRL_DPREFIX] == 0; +} + void MIPSState::UpdateCore(CPUCore desired) { if (PSP_CoreParameter().cpuCore == desired) { return; diff --git a/Core/MIPS/MIPS.h b/Core/MIPS/MIPS.h index fd9c829d21..bbe67ce373 100644 --- a/Core/MIPS/MIPS.h +++ b/Core/MIPS/MIPS.h @@ -186,6 +186,8 @@ public: return (vfpuCtrl[VFPU_CTRL_DPREFIX] >> (8 + i)) & 1; } + bool HasDefaultPrefix() const; + void SingleStep(); int RunLoopUntil(u64 globalTicks); // To clear jit caches, etc. diff --git a/Core/MIPS/x86/Jit.cpp b/Core/MIPS/x86/Jit.cpp index d7a04fe350..929481c7ba 100644 --- a/Core/MIPS/x86/Jit.cpp +++ b/Core/MIPS/x86/Jit.cpp @@ -135,10 +135,9 @@ Jit::Jit(MIPSState *mips) : blocks(mips, this), mips_(mips) fpr.SetEmitter(this); AllocCodeSpace(1024 * 1024 * 16); asm_.Init(mips, this); - // TODO: If it becomes possible to switch from the interpreter, this should be set right. - js.startDefaultPrefix = true; - safeMemFuncs.Init(&thunks); + + js.startDefaultPrefix = mips_->HasDefaultPrefix(); } Jit::~Jit() {