Browse Source
Merge pull request #8462 from liamwhite/dynarmic-profile
core: centralize profile scope for Dynarmic
pull/15/merge
Mai
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
2 additions and
7 deletions
-
src/core/arm/arm_interface.cpp
-
src/core/cpu_manager.cpp
-
src/core/hle/kernel/svc.cpp
|
|
|
@ -107,6 +107,7 @@ void ARM_Interface::Run() { |
|
|
|
} |
|
|
|
|
|
|
|
// Otherwise, run the thread.
|
|
|
|
system.EnterDynarmicProfile(); |
|
|
|
if (current_thread->GetStepState() == StepState::StepPending) { |
|
|
|
hr = StepJit(); |
|
|
|
|
|
|
|
@ -116,6 +117,7 @@ void ARM_Interface::Run() { |
|
|
|
} else { |
|
|
|
hr = RunJit(); |
|
|
|
} |
|
|
|
system.ExitDynarmicProfile(); |
|
|
|
|
|
|
|
// Notify the debugger and go to sleep if a breakpoint was hit.
|
|
|
|
if (Has(hr, breakpoint)) { |
|
|
|
|
|
|
|
@ -113,12 +113,10 @@ void CpuManager::MultiCoreRunGuestLoop() { |
|
|
|
|
|
|
|
while (true) { |
|
|
|
auto* physical_core = &kernel.CurrentPhysicalCore(); |
|
|
|
system.EnterDynarmicProfile(); |
|
|
|
while (!physical_core->IsInterrupted()) { |
|
|
|
physical_core->Run(); |
|
|
|
physical_core = &kernel.CurrentPhysicalCore(); |
|
|
|
} |
|
|
|
system.ExitDynarmicProfile(); |
|
|
|
{ |
|
|
|
Kernel::KScopedDisableDispatch dd(kernel); |
|
|
|
physical_core->ArmInterface().ClearExclusiveState(); |
|
|
|
@ -166,12 +164,10 @@ void CpuManager::SingleCoreRunGuestLoop() { |
|
|
|
auto& kernel = system.Kernel(); |
|
|
|
while (true) { |
|
|
|
auto* physical_core = &kernel.CurrentPhysicalCore(); |
|
|
|
system.EnterDynarmicProfile(); |
|
|
|
if (!physical_core->IsInterrupted()) { |
|
|
|
physical_core->Run(); |
|
|
|
physical_core = &kernel.CurrentPhysicalCore(); |
|
|
|
} |
|
|
|
system.ExitDynarmicProfile(); |
|
|
|
kernel.SetIsPhantomModeForSingleCore(true); |
|
|
|
system.CoreTiming().Advance(); |
|
|
|
kernel.SetIsPhantomModeForSingleCore(false); |
|
|
|
|
|
|
|
@ -2982,7 +2982,6 @@ static const FunctionDef* GetSVCInfo64(u32 func_num) { |
|
|
|
} |
|
|
|
|
|
|
|
void Call(Core::System& system, u32 immediate) { |
|
|
|
system.ExitDynarmicProfile(); |
|
|
|
auto& kernel = system.Kernel(); |
|
|
|
kernel.EnterSVCProfile(); |
|
|
|
|
|
|
|
@ -3007,8 +3006,6 @@ void Call(Core::System& system, u32 immediate) { |
|
|
|
auto* host_context = thread->GetHostContext().get(); |
|
|
|
host_context->Rewind(); |
|
|
|
} |
|
|
|
|
|
|
|
system.EnterDynarmicProfile(); |
|
|
|
} |
|
|
|
|
|
|
|
} // namespace Kernel::Svc
|