mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-05 18:22:57 +00:00
A64/translate/branch: bug: Read-after-write error in BLR
This commit is contained in:
@@ -39,10 +39,11 @@ bool TranslatorVisitor::BL(Imm<26> imm26) {
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::BLR(Reg Rn) {
|
||||
auto target = X(64, 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;
|
||||
@@ -50,6 +51,7 @@ bool TranslatorVisitor::BLR(Reg Rn) {
|
||||
|
||||
bool TranslatorVisitor::BR(Reg Rn) {
|
||||
auto target = X(64, Rn);
|
||||
|
||||
ir.SetPC(target);
|
||||
ir.SetTerm(IR::Term::ReturnToDispatch{});
|
||||
return false;
|
||||
@@ -57,6 +59,7 @@ bool TranslatorVisitor::BR(Reg Rn) {
|
||||
|
||||
bool TranslatorVisitor::RET(Reg Rn) {
|
||||
auto target = X(64, Rn);
|
||||
|
||||
ir.SetPC(target);
|
||||
ir.SetTerm(IR::Term::PopRSBHint{});
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user