From 0a13230c1c4d829543b7737b89e6b763a584e4a7 Mon Sep 17 00:00:00 2001 From: merry Date: Fri, 15 Apr 2022 16:17:26 +0100 Subject: [PATCH] dynarmic: Reschedule on every service call or interrupt --- src/core/arm/dynarmic/arm_dynarmic_32.cpp | 11 +++-------- src/core/arm/dynarmic/arm_dynarmic_64.cpp | 11 +++-------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index 6f3d53dadc..fb6d47fef5 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp @@ -227,14 +227,9 @@ std::shared_ptr ARM_Dynarmic_32::MakeJit(Common::PageTable* } void ARM_Dynarmic_32::Run() { - while (true) { - const auto hr = jit->Run(); - if (Has(hr, svc_call)) { - Kernel::Svc::Call(system, svc_swi); - } - if (Has(hr, break_loop) || !uses_wall_clock) { - break; - } + const auto hr = jit->Run(); + if (Has(hr, svc_call)) { + Kernel::Svc::Call(system, svc_swi); } } diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 1fcb2b891b..76fff6deaf 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -288,14 +288,9 @@ std::shared_ptr ARM_Dynarmic_64::MakeJit(Common::PageTable* } void ARM_Dynarmic_64::Run() { - while (true) { - const auto hr = jit->Run(); - if (Has(hr, svc_call)) { - Kernel::Svc::Call(system, svc_swi); - } - if (Has(hr, break_loop) || !uses_wall_clock) { - break; - } + const auto hr = jit->Run(); + if (Has(hr, svc_call)) { + Kernel::Svc::Call(system, svc_swi); } }