dolphin-emulator/Source/Core/Core
JosJuice 8c2c665af3 Jit: Check MSR state in BLR optimization
When we execute a JIT block, we have to make sure that both the PC and
the DR/IR bits of MSR are the same as they were when the block was
compiled. When jumping to a block from the dispatcher, this is done in
the way you would expect: By checking the PC and the relevant MSR bits.
However, when returning to a block using the BLR optimization, we only
check the PC. Checking the MSR bits is done by instead resetting the
stack when the MSR changes, making PC checks afterwards fail.

Except... We were only resetting the stack on rfi instructions. There
are actually many more ways for the MSR to change, and we weren't
covering those at all. I looked into resetting the stack on all of them,
but it would be pretty cumbersome both in terms of writing the code and
in terms of how often at runtime we'd have to reset the stack, so I
think the better option would be to check the MSR bits along with the
PC. That's what this commit implements.
2023-08-29 19:05:26 +02:00
..
Boot IOS/ES: Split ESDevice into ESCore and ESDevice. 2023-05-15 20:41:05 +02:00
Config Video: implement output resampling (upscaling/downscaling) methods 2023-08-18 02:00:55 +03:00
ConfigLoaders Remove force disable WC24 Standby 2023-07-22 22:24:09 -04:00
Debugger Kill AsciiToHex 2023-06-22 00:06:50 -05:00
DSP EnumUtils: Add Common::ToUnderlying 2023-06-17 07:15:33 -05:00
FifoPlayer Use structs for config callback IDs 2023-08-17 19:19:26 +02:00
HLE HLE_OS: Manually handle printfs from emulated software to prevent emulated software from crashing Dolphin with an invalid printf formatting string. 2023-07-29 20:06:09 +02:00
HW Merge pull request #12117 from JosJuice/config-callback-cpu 2023-08-26 16:34:46 +02:00
IOS Merge pull request #12097 from Dentomologist/ios_remove_unused_member_variables 2023-08-26 16:41:45 +02:00
PowerPC Jit: Check MSR state in BLR optimization 2023-08-29 19:05:26 +02:00
AchievementManager.cpp Synchronized Achievement Window 2023-07-01 22:26:30 -04:00
AchievementManager.h Synchronized Achievement Window 2023-07-01 22:26:30 -04:00
ActionReplay.cpp Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
ActionReplay.h Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
ARDecrypt.cpp
ARDecrypt.h
BootManager.cpp Added LoadGameByFilenameAsync and CloseGame to AchievementManager 2023-04-12 03:08:47 -04:00
BootManager.h
CheatCodes.h Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
CheatGeneration.cpp
CheatGeneration.h
CheatSearch.cpp PowerPC/MMU: Refactor to class, move to System. 2023-03-28 03:47:51 +02:00
CheatSearch.h
CMakeLists.txt Don't call RunAsCPUThread in config callbacks 2023-08-17 19:19:25 +02:00
CommonTitles.h Add default support for WiiLink + configuration 2023-06-25 14:57:15 -04:00
ConfigManager.cpp Add default support for WiiLink + configuration 2023-06-25 14:57:15 -04:00
ConfigManager.h Merge pull request #11751 from noahpistilli/discord-rpc 2023-05-19 19:35:17 +02:00
Core.cpp Merge pull request #12117 from JosJuice/config-callback-cpu 2023-08-26 16:34:46 +02:00
Core.h Core: Assert that only the Host thread may call PauseAndLock(). 2023-06-02 18:51:43 +02:00
CoreTiming.cpp Don't call RunAsCPUThread in config callbacks 2023-08-17 19:19:25 +02:00
CoreTiming.h Use structs for config callback IDs 2023-08-17 19:19:26 +02:00
CPUThreadConfigCallback.cpp CPUThreadConfigCallback: Remove some CPU thread asserts 2023-08-17 19:19:26 +02:00
CPUThreadConfigCallback.h Use structs for config callback IDs 2023-08-17 19:19:26 +02:00
DolphinAnalytics.cpp Video: implement color correction to match the NTSC and PAL color spaces (and gamma) that GC and Wii targeted. 2023-06-19 01:34:42 +03:00
DolphinAnalytics.h DolphinAnalytics: Add READS_BOUNDING_BOX game quirk 2023-05-06 17:18:17 -07:00
DSPEmulator.cpp
DSPEmulator.h DSPEmulator: Remove unused PauseAndLock parameter 2023-06-25 20:29:23 -07:00
FreeLookConfig.cpp Don't call RunAsCPUThread in config callbacks 2023-08-17 19:19:25 +02:00
FreeLookConfig.h
FreeLookManager.cpp ControllerEmu: Convert Translatability to enum class 2023-06-12 18:11:04 -07:00
FreeLookManager.h
GeckoCode.cpp PowerPC/MMU: Refactor to class, move to System. 2023-03-28 03:47:51 +02:00
GeckoCode.h
GeckoCodeConfig.cpp Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
GeckoCodeConfig.h Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
Host.h
HotkeyManager.cpp ControllerEmu: Convert Translatability to enum class 2023-06-12 18:11:04 -07:00
HotkeyManager.h Add Hotkeys for Skylanders Portal and Infinity Base Menus 2023-05-26 13:36:08 -07:00
LibusbUtils.cpp
LibusbUtils.h
MachineContext.h
MemoryWatcher.cpp PowerPC/MMU: Refactor to class, move to System. 2023-03-28 03:47:51 +02:00
MemoryWatcher.h
MemTools.cpp JitInterface: Refactor to class, move to System. 2023-03-26 14:38:07 +02:00
MemTools.h
Movie.cpp Common: Convert FromWhichRoot to enum class 2023-06-13 13:25:22 -07:00
Movie.h
NetPlayClient.cpp Replace std::ostringstream usage with fmt::format 2023-06-18 18:37:32 -05:00
NetPlayClient.h Common/TraversalProto: Move interface into Common namespace 2023-04-24 08:53:14 -04:00
NetPlayCommon.cpp
NetPlayCommon.h
NetPlayProto.h NetPlay: Limit ENet's MTU to 1392 as a workaround for dropped packets over VPN via WireGuard, see https://github.com/lsalzman/enet/issues/132 2023-04-02 17:23:10 +02:00
NetPlayServer.cpp Do not try portmapping when using traversal server 2023-07-13 01:15:12 -07:00
NetPlayServer.h Common/TraversalProto: Move interface into Common namespace 2023-04-24 08:53:14 -04:00
NetworkCaptureLogger.cpp
NetworkCaptureLogger.h
PatchEngine.cpp Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
PatchEngine.h Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
State.cpp IOS/WiiSockMan: Move instance to IOS Kernel. 2023-04-18 01:24:10 +02:00
State.h
SyncIdentifier.h
SysConf.cpp
SysConf.h
System.cpp Core: add CustomAssetLoader to System 2023-06-05 16:33:19 -05:00
System.h Core: add CustomAssetLoader to System 2023-06-05 16:33:19 -05:00
TitleDatabase.cpp
TitleDatabase.h
WC24PatchEngine.cpp Add default support for WiiLink + configuration 2023-06-25 14:57:15 -04:00
WC24PatchEngine.h Add default support for WiiLink + configuration 2023-06-25 14:57:15 -04:00
WiiRoot.cpp Common: Convert FromWhichRoot to enum class 2023-06-13 13:25:22 -07:00
WiiRoot.h
WiiUtils.cpp Qt: Add file size stats to NAND Check. 2023-07-14 05:24:29 +02:00
WiiUtils.h Qt: Add file size stats to NAND Check. 2023-07-14 05:24:29 +02:00