From 1af5bef32c9cb58a9677851a7b192b474b1eb110 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 7 Aug 2016 20:19:37 +0100 Subject: [PATCH] TranslateArm: Implement BLX (imm), BLX (reg) and BXJ --- src/frontend/arm_types.h | 4 +- .../translate/translate_arm/branch.cpp | 44 +++++++++++-------- .../translate/translate_arm/translate_arm.h | 2 +- tests/arm/fuzz_arm.cpp | 14 ++++++ 4 files changed, 43 insertions(+), 21 deletions(-) diff --git a/src/frontend/arm_types.h b/src/frontend/arm_types.h index a4bf94f7..1b419b87 100644 --- a/src/frontend/arm_types.h +++ b/src/frontend/arm_types.h @@ -119,8 +119,8 @@ struct LocationDescriptor { return LocationDescriptor(new_arm_pc, tflag, eflag, fpscr); } - LocationDescriptor AdvancePC(s32 amount) const { - return LocationDescriptor(arm_pc + amount, tflag, eflag, fpscr); + LocationDescriptor AdvancePC(int amount) const { + return LocationDescriptor(static_cast(arm_pc + amount), tflag, eflag, fpscr); } LocationDescriptor SetTFlag(bool new_tflag) const { diff --git a/src/frontend/translate/translate_arm/branch.cpp b/src/frontend/translate/translate_arm/branch.cpp index c2703d71..4a061b07 100644 --- a/src/frontend/translate/translate_arm/branch.cpp +++ b/src/frontend/translate/translate_arm/branch.cpp @@ -11,12 +11,10 @@ namespace Dynarmic { namespace Arm { -bool ArmTranslatorVisitor::arm_B(Cond cond, Imm24 imm24) -{ - s32 imm32 = Common::SignExtend<26, s32>(imm24 << 2) + 8; - // B