summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authormagumagu9 <magumagu9@gmail.com>2008-12-23 22:34:58 +0000
committermagumagu9 <magumagu9@gmail.com>2008-12-23 22:34:58 +0000
commit4aa693ea54dc3fe178ce4b1dbdcb9d937dad7924 (patch)
treef8d2fa862bb4f69f8d5788953270192db1deba8c /Source
parent42dc237d7ff134288a5b586af570f0cc5afc607d (diff)
Fix a regression exposed by my previous changes to rlwinm. Also, some
minor cleanup. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1643 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp
index 885a2d44d6..1920703474 100644
--- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp
+++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp
@@ -673,20 +673,18 @@
int s = inst.RS;
if (gpr.R(s).IsImm() && !inst.Rc)
{
- unsigned mask = Helper_Mask(inst.MB, inst.ME);
unsigned result = gpr.R(s).offset;
if (inst.SH != 0)
- result = (result << inst.SH) |
- (result >> (32 - inst.SH));
- result &= mask;
+ result = _rotl(result, inst.SH);
+ result &= Helper_Mask(inst.MB, inst.ME);
gpr.SetImmediate32(a, result);
return;
}
+ gpr.Lock(a, s);
+ gpr.LoadToX64(a, a == s);
if (a != s)
{
- gpr.Lock(a, s);
- gpr.LoadToX64(a, false);
MOV(32, gpr.R(a), gpr.R(s));
}