From b5dbd6f2a27cc85a7262920942dd1c78fff21bb5 Mon Sep 17 00:00:00 2001
From: Normmatt <normmatt234@gmail.com>
Date: Wed, 17 Dec 2014 02:54:24 -0500
Subject: [PATCH] armemu: Fix SXTAB

---
 src/core/arm/interpreter/armemu.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/core/arm/interpreter/armemu.cpp b/src/core/arm/interpreter/armemu.cpp
index 843323293..cffbae7e7 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;
 		}