aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ARMeilleure/Instructions/InstEmitFlowHelper.cs5
-rw-r--r--ARMeilleure/Instructions/InstEmitMemory.cs6
2 files changed, 8 insertions, 3 deletions
diff --git a/ARMeilleure/Instructions/InstEmitFlowHelper.cs b/ARMeilleure/Instructions/InstEmitFlowHelper.cs
index 8ce704b1..6ac32908 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 b507938d..7baed14c 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);
}