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); }