diff --git a/ARMeilleure/Instructions/InstEmitFlowHelper.cs b/ARMeilleure/Instructions/InstEmitFlowHelper.cs
index 8ce704b102..6ac329085d 100644
--- a/ARMeilleure/Instructions/InstEmitFlowHelper.cs
+++ b/ARMeilleure/Instructions/InstEmitFlowHelper.cs
@@ -163,6 +163,11 @@ namespace ARMeilleure.Instructions
         {
             if (isReturn)
             {
+                if (target.Type == OperandType.I32)
+                {
+                    target = context.ZeroExtend32(OperandType.I64, target);
+                }
+
                 context.Return(target);
             }
             else
diff --git a/ARMeilleure/Instructions/InstEmitMemory.cs b/ARMeilleure/Instructions/InstEmitMemory.cs
index b507938d55..7baed14c8d 100644
--- a/ARMeilleure/Instructions/InstEmitMemory.cs
+++ b/ARMeilleure/Instructions/InstEmitMemory.cs
@@ -101,7 +101,7 @@ namespace ARMeilleure.Instructions
 
             Operand address = GetAddress(context);
 
-            InstEmitMemoryHelper.EmitStore(context, address, op.Rt, op.Size);
+            EmitStore(context, address, op.Rt, op.Size);
 
             EmitWBackIfNeeded(context, address);
         }
@@ -113,8 +113,8 @@ namespace ARMeilleure.Instructions
             Operand address = GetAddress(context);
             Operand address2 = GetAddress(context, 1L << op.Size);
 
-            InstEmitMemoryHelper.EmitStore(context, address,  op.Rt,  op.Size);
-            InstEmitMemoryHelper.EmitStore(context, address2, op.Rt2, op.Size);
+            EmitStore(context, address,  op.Rt,  op.Size);
+            EmitStore(context, address2, op.Rt2, op.Size);
 
             EmitWBackIfNeeded(context, address);
         }