mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-09 19:56:27 +00:00
A64: Implement branch (register)
This commit is contained in:
@@ -38,5 +38,29 @@ bool TranslatorVisitor::BL(Imm<26> imm26) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::BLR(Reg Rn) {
|
||||
X(64, Reg::R30, ir.Imm64(ir.PC() + 4));
|
||||
ir.PushRSB(ir.current_location.AdvancePC(4));
|
||||
|
||||
auto target = X(64, Rn);
|
||||
ir.SetPC(target);
|
||||
ir.SetTerm(IR::Term::ReturnToDispatch{});
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::BR(Reg Rn) {
|
||||
auto target = X(64, Rn);
|
||||
ir.SetPC(target);
|
||||
ir.SetTerm(IR::Term::ReturnToDispatch{});
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::RET(Reg Rn) {
|
||||
auto target = X(64, Rn);
|
||||
ir.SetPC(target);
|
||||
ir.SetTerm(IR::Term::PopRSBHint{});
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace A64
|
||||
} // namespace Dynarmic
|
||||
|
||||
Reference in New Issue
Block a user