A32: Implement BKPT

This commit is contained in:
MerryMage 2018-01-28 12:56:00 +00:00
parent f023bbb893
commit 865a30eb0d
2 changed files with 12 additions and 2 deletions

View file

@ -24,6 +24,8 @@ enum class Exception {
/// An unpredictable instruction is to be executed. Implementation-defined behaviour should now happen.
/// This behaviour is up to the user of this library to define.
UnpredictableInstruction,
/// A BKPT instruction was executed.
Breakpoint,
};
/// These function pointers may be inserted into compiled code.

View file

@ -6,10 +6,18 @@
#include "translate_arm.h"
#include "dynarmic/A32/config.h"
namespace Dynarmic::A32 {
bool ArmTranslatorVisitor::arm_BKPT(Cond /*cond*/, Imm12 /*imm12*/, Imm4 /*imm4*/) {
return InterpretThisInstruction();
bool ArmTranslatorVisitor::arm_BKPT(Cond cond, Imm12 /*imm12*/, Imm4 /*imm4*/) {
if (cond != Cond::AL) {
return UnpredictableInstruction();
}
ir.ExceptionRaised(Exception::Breakpoint);
ir.SetTerm(IR::Term::CheckHalt{IR::Term::ReturnToDispatch{}});
return false;
}
bool ArmTranslatorVisitor::arm_SVC(Cond cond, Imm24 imm24) {