aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Normmatt <normmatt234@gmail.com>2014-12-17 02:54:24 -0500
committerGravatar Lioncash <mathew1800@gmail.com>2014-12-17 03:17:44 -0500
commitb5dbd6f2a27cc85a7262920942dd1c78fff21bb5 (patch)
tree25c9e49781d45aace8ce19c1559c834b21b61fc3 /src
parentefebd5589a53f3f21f36d1a3c92a4e567bd89c8e (diff)
armemu: Fix SXTAB
Diffstat (limited to 'src')
-rw-r--r--src/core/arm/interpreter/armemu.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/core/arm/interpreter/armemu.cpp b/src/core/arm/interpreter/armemu.cpp
index 84332329..cffbae7e 100644
--- a/src/core/arm/interpreter/armemu.cpp
+++ b/src/core/arm/interpreter/armemu.cpp
@@ -6044,7 +6044,7 @@ L_stm_s_takeabort:
break;
}
- Rm = ((state->Reg[BITS(0, 3)] >> ror) & 0xFF);
+ Rm = ((state->Reg[BITS(0, 3)] >> ror) & 0xFF) | ((state->Reg[BITS(0, 3)] << (32 - ror)) & 0xFF) & 0xFF;
if (Rm & 0x80)
Rm |= 0xffffff00;
@@ -6053,7 +6053,7 @@ L_stm_s_takeabort:
state->Reg[BITS(12, 15)] = Rm;
else
/* SXTAB */
- state->Reg[BITS(12, 15)] += Rm;
+ state->Reg[BITS(12, 15)] = state->Reg[BITS(16, 19)] + Rm;
return 1;
}