diff options
author | merry <git@mary.rs> | 2022-02-22 13:41:56 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-22 10:41:56 -0300 |
commit | f1460d549441f10d63bde9d7d36282cc007b4c7e (patch) | |
tree | a86e6e8f81c57cfed7cf9cb3aebbabc9cad212d9 /ARMeilleure/Instructions | |
parent | 644b497df17bae1790c31e23b04f20ff368d4e9e (diff) |
A32: Fix BLX and BXWritePC (#3151)1.1.48
Diffstat (limited to 'ARMeilleure/Instructions')
-rw-r--r-- | ARMeilleure/Instructions/InstEmitFlow32.cs | 2 | ||||
-rw-r--r-- | ARMeilleure/Instructions/InstEmitHelper.cs | 2 |
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); } |