diff options
| author | bunnei <bunneidev@gmail.com> | 2020-11-13 11:11:12 -0800 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2020-11-29 01:31:51 -0800 |
| commit | aaffe73f47d0842d2d267d9e13baf944b7038a1e (patch) | |
| tree | 09c9d764734db56896f77d986afa6ccd5d2c745d /src/core/hle/kernel/svc.cpp | |
| parent | 276a0f7b8c22f86659075ba9cc19f76182db93f6 (diff) | |
hle: kernel: multicore: Replace n-JITs impl. with 4 JITs.
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index e3b770d66f..95d6e2b4d8 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -2639,6 +2639,9 @@ void Call(Core::System& system, u32 immediate) { auto& kernel = system.Kernel(); kernel.EnterSVCProfile(); + auto* thread = system.CurrentScheduler().GetCurrentThread(); + thread->SetContinuousOnSVC(true); + const FunctionDef* info = system.CurrentProcess()->Is64BitProcess() ? GetSVCInfo64(immediate) : GetSVCInfo32(immediate); if (info) { @@ -2652,6 +2655,12 @@ void Call(Core::System& system, u32 immediate) { } kernel.ExitSVCProfile(); + + if (!thread->IsContinuousOnSVC()) { + auto* host_context = thread->GetHostContext().get(); + host_context->Rewind(); + } + system.EnterDynarmicProfile(); } |
