summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorMerryMage <MerryMage@users.noreply.github.com>2017-03-17 17:09:50 +0000
committerMerryMage <MerryMage@users.noreply.github.com>2017-03-17 17:10:25 +0000
commit5e7d01dea40b402d134f902f33ee2cd76ede4a9a (patch)
treea6bbfc32ba266b4bd175d24359e2773e2c2daab1 /Source/Core
parent14739c55c34d16208380bec5f2502b3267dd5a43 (diff)
DSPJitRegCache: Remove ebp_store
Restoring RBP before function calls is a no-op.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp30
1 files changed, 1 insertions, 29 deletions
diff --git a/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp b/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp
index ec4f9b5ea2..2cda9196c1 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp
@@ -380,8 +380,6 @@ void DSPJitRegCache::FlushRegs()
m_use_ctr = 0;
}
-static u64 ebp_store;
-
void DSPJitRegCache::LoadRegs(bool emit)
{
for (size_t i = 0; i < m_regs.size(); i++)
@@ -391,11 +389,6 @@ void DSPJitRegCache::LoadRegs(bool emit)
MovToHostReg(i, m_regs[i].host_reg, emit);
}
}
-
- if (emit)
- {
- m_emitter.MOV(64, M(&ebp_store), R(RBP));
- }
}
void DSPJitRegCache::SaveRegs()
@@ -411,8 +404,6 @@ void DSPJitRegCache::SaveRegs()
_assert_msg_(DSPLLE, !m_regs[i].loc.IsSimpleReg(), "register %zu is still a simple reg", i);
}
-
- m_emitter.MOV(64, R(RBP), M(&ebp_store));
}
void DSPJitRegCache::PushRegs()
@@ -455,14 +446,10 @@ void DSPJitRegCache::PushRegs()
m_xregs[i].guest_reg == DSP_REG_NONE || m_xregs[i].guest_reg == DSP_REG_STATIC,
"register %zu is still used", i);
}
-
- m_emitter.MOV(64, R(RBP), M(&ebp_store));
}
void DSPJitRegCache::PopRegs()
{
- m_emitter.MOV(64, M(&ebp_store), R(RBP));
-
int push_count = 0;
for (int i = static_cast<int>(m_xregs.size() - 1); i >= 0; i--)
{
@@ -493,22 +480,7 @@ void DSPJitRegCache::PopRegs()
X64Reg DSPJitRegCache::MakeABICallSafe(X64Reg reg)
{
- if (reg != RBP)
- {
- return reg;
- }
-
- size_t rbp_guest = m_xregs[RBP].guest_reg;
- m_xregs[RBP].guest_reg = DSP_REG_USED;
- X64Reg safe = FindSpillFreeXReg();
- _assert_msg_(DSPLLE, safe != INVALID_REG, "could not find register");
- if (safe == INVALID_REG)
- {
- m_emitter.INT3();
- }
- m_xregs[RBP].guest_reg = rbp_guest;
- m_emitter.MOV(64, R(safe), R(reg));
- return safe;
+ return reg;
}
void DSPJitRegCache::MovToHostReg(size_t reg, X64Reg host_reg, bool load)