citra/src/core/hle
Sebastian Valle 9ae37da292
Kernel/Process: Fixed scheduling multiple processes in the SysCore using Dynarmic (#5193)
* Kernel/Process: Notify the CPUs that a new pagetable has been set every time the process they're executing changes.

Previously the page table would only be changed when the current CPU's page table was changed, this lead to stale JIT states and the PC going to 0 when context-switching a different core inside the ThreadManager::SwitchContext function because the JIT for a new pagetable is only constructed upon receiving the change notification.

* Kernel/Process: Use the relevant CPU's last process to determine when to switch its current process.

Previously it was checking the kernel's current_process variable, which gets overwritten every time a CPU runs its slice. The rescheduling happens after all CPUs have run their slice so the code was effectively only checking the last CPU's process.
2020-04-15 14:35:19 +02:00
..
applets applets/swkbd: Remove text memory clearing 2019-12-01 23:01:07 +08:00
kernel Kernel/Process: Fixed scheduling multiple processes in the SysCore using Dynarmic (#5193) 2020-04-15 14:35:19 +02:00
service Fix Luigi's Mansion can't remove amiibo bug (#5200) 2020-04-14 14:33:49 +02:00
ipc_helpers.h ipc_helpers: silent signed comparison warning 2019-07-14 14:52:17 -04:00
ipc.h Kernel/Thread: move thread queue, current thread, and scheduling related function into the manager 2018-10-26 16:07:11 -04:00
lock.cpp hle/lock: Remove #pragma once in cpp file 2017-10-21 13:59:14 +01:00
lock.h Use recursive_mutex instead of mutex to fix #2902 2017-08-29 20:39:55 +12:00
result.h ResultCode: use default copy assignment 2018-11-12 13:59:34 -05:00
romfs.cpp RomFSFile: Default constructor 2018-07-26 13:10:56 +02:00
romfs.h RomFSFile: Default constructor 2018-07-26 13:10:56 +02:00