summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2015-03-02 21:38:09 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2015-03-02 21:38:09 -0600
commit81242dd4a7a219dfb0995a709c20ce4e2ee9f4a2 (patch)
treefdfe077b6b1dd5732edf5526a194d63407eb08e4 /Source
parentf1a9db9bdc13e0e706018ed44c0c731c0d076b2a (diff)
[AArch64] Allow the other FPR push/pop routines to use a temporary register.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStore.cpp8
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStoreFloating.cpp12
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp8
3 files changed, 14 insertions, 14 deletions
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStore.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStore.cpp
index 99fe6a1581..0e10fcbb52 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStore.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStore.cpp
@@ -167,12 +167,12 @@ void JitArm64::SafeLoadToReg(u32 dest, s32 addr, s32 offsetReg, u32 flags, s32 o
// Has a chance of being backpatched which will destroy our state
// push and pop everything in this instance
ABI_PushRegisters(regs_in_use);
- m_float_emit.ABI_PushRegisters(fprs_in_use);
+ m_float_emit.ABI_PushRegisters(fprs_in_use, X30);
EmitBackpatchRoutine(this, flags,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
dest_reg, XA);
- m_float_emit.ABI_PopRegisters(fprs_in_use);
+ m_float_emit.ABI_PopRegisters(fprs_in_use, X30);
ABI_PopRegisters(regs_in_use);
}
@@ -318,12 +318,12 @@ void JitArm64::SafeStoreFromReg(s32 dest, u32 value, s32 regOffset, u32 flags, s
// Has a chance of being backpatched which will destroy our state
// push and pop everything in this instance
ABI_PushRegisters(regs_in_use);
- m_float_emit.ABI_PushRegisters(fprs_in_use);
+ m_float_emit.ABI_PushRegisters(fprs_in_use, X30);
EmitBackpatchRoutine(this, flags,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
RS, XA);
- m_float_emit.ABI_PopRegisters(fprs_in_use);
+ m_float_emit.ABI_PopRegisters(fprs_in_use, X30);
ABI_PopRegisters(regs_in_use);
}
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStoreFloating.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStoreFloating.cpp
index 21da40da3f..1247dacd6d 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStoreFloating.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStoreFloating.cpp
@@ -190,12 +190,12 @@ void JitArm64::lfXX(UGeckoInstruction inst)
// Has a chance of being backpatched which will destroy our state
// push and pop everything in this instance
ABI_PushRegisters(regs_in_use);
- m_float_emit.ABI_PushRegisters(fprs_in_use);
+ m_float_emit.ABI_PushRegisters(fprs_in_use, X30);
EmitBackpatchRoutine(this, flags,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
VD, XA);
- m_float_emit.ABI_PopRegisters(fprs_in_use);
+ m_float_emit.ABI_PopRegisters(fprs_in_use, X30);
ABI_PopRegisters(regs_in_use);
}
@@ -406,9 +406,9 @@ void JitArm64::stfXX(UGeckoInstruction inst)
else
{
ABI_PushRegisters(regs_in_use);
- m_float_emit.ABI_PushRegisters(fprs_in_use);
+ m_float_emit.ABI_PushRegisters(fprs_in_use, X30);
EmitBackpatchRoutine(this, flags, false, false, V0, XA);
- m_float_emit.ABI_PopRegisters(fprs_in_use);
+ m_float_emit.ABI_PopRegisters(fprs_in_use, X30);
ABI_PopRegisters(regs_in_use);
}
}
@@ -417,12 +417,12 @@ void JitArm64::stfXX(UGeckoInstruction inst)
// Has a chance of being backpatched which will destroy our state
// push and pop everything in this instance
ABI_PushRegisters(regs_in_use);
- m_float_emit.ABI_PushRegisters(fprs_in_use);
+ m_float_emit.ABI_PushRegisters(fprs_in_use, X30);
EmitBackpatchRoutine(this, flags,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
V0, XA);
- m_float_emit.ABI_PopRegisters(fprs_in_use);
+ m_float_emit.ABI_PopRegisters(fprs_in_use, X30);
ABI_PopRegisters(regs_in_use);
}
gpr.Unlock(W0, W1, W30);
diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp
index 6c35cc0649..20606a9554 100644
--- a/Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp
@@ -79,11 +79,11 @@ private:
ARM64FloatEmitter float_emit(m_emit);
m_emit->ABI_PushRegisters(m_gprs_in_use);
- float_emit.ABI_PushRegisters(m_fprs_in_use);
+ float_emit.ABI_PushRegisters(m_fprs_in_use, X1);
m_emit->MOVI2R(W1, m_address);
m_emit->MOV(W2, m_src_reg);
m_emit->BLR(m_emit->ABI_SetupLambda(lambda));
- float_emit.ABI_PopRegisters(m_fprs_in_use);
+ float_emit.ABI_PopRegisters(m_fprs_in_use, X1);
m_emit->ABI_PopRegisters(m_gprs_in_use);
}
@@ -179,10 +179,10 @@ private:
ARM64FloatEmitter float_emit(m_emit);
m_emit->ABI_PushRegisters(m_gprs_in_use);
- float_emit.ABI_PushRegisters(m_fprs_in_use);
+ float_emit.ABI_PushRegisters(m_fprs_in_use, X1);
m_emit->MOVI2R(W1, m_address);
m_emit->BLR(m_emit->ABI_SetupLambda(lambda));
- float_emit.ABI_PopRegisters(m_fprs_in_use);
+ float_emit.ABI_PopRegisters(m_fprs_in_use, X1);
m_emit->ABI_PopRegisters(m_gprs_in_use);
if (m_sign_extend)