TranslateArm: Implement SETEND

This commit is contained in:
MerryMage 2016-08-11 17:15:33 +01:00
parent 8964b38cf9
commit 0e5593ba62
3 changed files with 47 additions and 6 deletions

View file

@ -27,6 +27,7 @@ set(SRCS
frontend/translate/translate_arm/multiply.cpp
frontend/translate/translate_arm/parallel.cpp
frontend/translate/translate_arm/reversal.cpp
frontend/translate/translate_arm/status_register_access.cpp
frontend/translate/translate_arm/synchronization.cpp
frontend/translate/translate_arm/vfp2.cpp
frontend/translate/translate_thumb.cpp

View file

@ -0,0 +1,40 @@
/* This file is part of the dynarmic project.
* Copyright (c) 2016 MerryMage
* This software may be used and distributed according to the terms of the GNU
* General Public License version 2 or any later version.
*/
#include "translate_arm.h"
namespace Dynarmic {
namespace Arm {
bool ArmTranslatorVisitor::arm_CPS() {
return InterpretThisInstruction();
}
bool ArmTranslatorVisitor::arm_MRS() {
return InterpretThisInstruction();
}
bool ArmTranslatorVisitor::arm_MSR() {
return InterpretThisInstruction();
}
bool ArmTranslatorVisitor::arm_RFE() {
return InterpretThisInstruction();
}
bool ArmTranslatorVisitor::arm_SETEND(bool E) {
// SETEND {BE,LE}
ir.SetTerm(ir.current_location.AdvancePC(4).SetEFlag(E));
return false;
}
bool ArmTranslatorVisitor::arm_SRS() {
return InterpretThisInstruction();
}
} // namespace Arm
} // namespace Dynarmic

View file

@ -317,12 +317,12 @@ struct ArmTranslatorVisitor final {
bool arm_SWPB(Cond cond, Reg n, Reg d, Reg m);
// Status register access instructions
bool arm_CPS() { return InterpretThisInstruction(); }
bool arm_MRS() { return InterpretThisInstruction(); }
bool arm_MSR() { return InterpretThisInstruction(); }
bool arm_RFE() { return InterpretThisInstruction(); }
bool arm_SETEND(bool E) { return InterpretThisInstruction(); }
bool arm_SRS() { return InterpretThisInstruction(); }
bool arm_CPS();
bool arm_MRS();
bool arm_MSR();
bool arm_RFE();
bool arm_SETEND(bool E);
bool arm_SRS();
// Floating-point three-register data processing instructions
bool vfp2_VADD(Cond cond, bool D, size_t Vn, size_t Vd, bool sz, bool N, bool M, size_t Vm);