aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Instructions
diff options
context:
space:
mode:
authormerry <git@mary.rs>2022-02-22 13:41:56 +0000
committerGitHub <noreply@github.com>2022-02-22 10:41:56 -0300
commitf1460d549441f10d63bde9d7d36282cc007b4c7e (patch)
treea86e6e8f81c57cfed7cf9cb3aebbabc9cad212d9 /ARMeilleure/Instructions
parent644b497df17bae1790c31e23b04f20ff368d4e9e (diff)
A32: Fix BLX and BXWritePC (#3151)1.1.48
Diffstat (limited to 'ARMeilleure/Instructions')
-rw-r--r--ARMeilleure/Instructions/InstEmitFlow32.cs2
-rw-r--r--ARMeilleure/Instructions/InstEmitHelper.cs2
2 files changed, 2 insertions, 2 deletions
diff --git a/ARMeilleure/Instructions/InstEmitFlow32.cs b/ARMeilleure/Instructions/InstEmitFlow32.cs
index add66a42..2b052505 100644
--- a/ARMeilleure/Instructions/InstEmitFlow32.cs
+++ b/ARMeilleure/Instructions/InstEmitFlow32.cs
@@ -71,7 +71,7 @@ namespace ARMeilleure.Instructions
SetFlag(context, PState.TFlag, bitOne);
- EmitVirtualCall(context, addr);
+ EmitBxWritePc(context, addr);
}
public static void Bx(ArmEmitterContext context)
diff --git a/ARMeilleure/Instructions/InstEmitHelper.cs b/ARMeilleure/Instructions/InstEmitHelper.cs
index d1b9de84..433b0831 100644
--- a/ARMeilleure/Instructions/InstEmitHelper.cs
+++ b/ARMeilleure/Instructions/InstEmitHelper.cs
@@ -186,7 +186,7 @@ namespace ARMeilleure.Instructions
SetFlag(context, PState.TFlag, mode);
- Operand addr = context.ConditionalSelect(mode, pc, context.BitwiseAnd(pc, Const(~3)));
+ Operand addr = context.ConditionalSelect(mode, context.BitwiseAnd(pc, Const(~1)), context.BitwiseAnd(pc, Const(~3)));
InstEmitFlowHelper.EmitVirtualJump(context, addr, isReturn);
}