dolphin-emulator/Source/Core/Core
magumagu d557310371 Support for dynamic BAT modification (dynamic-bat).
Fundamentally, all this does is enforce the invariant that we always
translate effective addresses based on the current BAT registers and
page table before we do anything else with them.

This change can be logically divided into three parts.  The first part is
creating a table to represent the current BAT state, and keeping it up to
date (PowerPC::IBATUpdated, PowerPC::DBATUpdated, etc.).  This does
nothing by itself, but it's necessary for the other parts.

The second part (mostly in MMU.cpp) is simply removing all the hardcoded
checks for specific untranslated addresses, and consistently translating
addresses using the current BAT configuration. Very straightforward, but a
lot of code changes because we hardcoded assumptions all over the place.

The third part (mostly in Memmap.cpp) is making the fastmem arena reflect
the current BAT configuration.  We do this by redoing the mapping (calling
memmap()) based on the BAT table whenever it changes.

One additional minor change is that translation can fail in two ways:
either the segment is a direct store segment, or page table lookup failed.
The difference doesn't usually matter, but the difference affects cache
instructions, like dcbz.
2016-09-06 08:43:22 +02:00
..
Boot Support for dynamic BAT modification (dynamic-bat). 2016-09-06 08:43:22 +02:00
Debugger Invalidate the icache when inserting a nop or BLR 2016-08-23 07:37:54 -04:00
DSP x64Emitter: Generify ABI_CallFunction variants 2016-08-31 22:54:47 -04:00
FifoPlayer Support for dynamic BAT modification (dynamic-bat). 2016-09-06 08:43:22 +02:00
HLE HLE_OS: Return string from GetStringVA by value 2016-08-19 00:31:54 -04:00
HW Support for dynamic BAT modification (dynamic-bat). 2016-09-06 08:43:22 +02:00
IPC_HLE Support for dynamic BAT modification (dynamic-bat). 2016-09-06 08:43:22 +02:00
PowerPC Support for dynamic BAT modification (dynamic-bat). 2016-09-06 08:43:22 +02:00
ActionReplay.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ActionReplay.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Analytics.cpp Suppress deprecation warning. 2016-06-26 00:49:51 -04:00
Analytics.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ARDecrypt.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ARDecrypt.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
BootManager.cpp Merge pull request #4106 from RisingFog/dtm_gc_language 2016-08-10 12:16:20 -04:00
BootManager.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
CMakeLists.txt Remove AM Baseboard 2016-08-11 12:53:44 +02:00
ConfigManager.cpp Allow to change Wii sd card path in config pane 2016-07-29 15:03:01 +02:00
ConfigManager.h Allow to change Wii sd card path in config pane 2016-07-29 15:03:01 +02:00
Core.cpp Merge pull request #3386 from lioncash/memory 2016-08-19 11:04:45 +02:00
Core.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Core.vcxproj Remove AM Baseboard 2016-08-11 12:53:44 +02:00
Core.vcxproj.filters Remove AM Baseboard 2016-08-11 12:53:44 +02:00
CoreTiming.cpp CoreTiming: Document initial startup behavior 2016-09-03 14:55:45 +10:00
CoreTiming.h CoreTiming: Document initial startup behavior 2016-09-03 14:55:45 +10:00
DSPEmulator.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
DSPEmulator.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ec_wii.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ec_wii.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GeckoCode.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GeckoCode.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GeckoCodeConfig.cpp Fix building with PCH disabled. 2016-08-07 01:18:59 -05:00
GeckoCodeConfig.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Host.h VideoCommon: Drop GetConfigName. 2016-06-26 12:34:59 +02:00
HotkeyManager.cpp [Hotkey] Added custom textures toggle 2016-08-19 23:14:56 -05:00
HotkeyManager.h [Hotkey] Added custom textures toggle 2016-08-19 23:14:56 -05:00
MachineContext.h Add a context definition for OpenBSD amd64. 2016-07-17 22:15:14 -06:00
MemoryWatcher.cpp Core: Change CoreTiming event key from int to EventType* 2016-09-03 14:55:44 +10:00
MemoryWatcher.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
MemTools.cpp Add a context definition for OpenBSD amd64. 2016-07-17 22:15:14 -06:00
MemTools.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Movie.cpp Add Gamecube Language to DTM Header 2016-08-09 23:02:31 -04:00
Movie.h Remove Global Declarations from Movie 2016-08-04 15:24:44 -04:00
NetPlayClient.cpp Use Common::Flag and Common::Event when possible 2016-08-10 16:08:15 +02:00
NetPlayClient.h Use Common::Flag and Common::Event when possible 2016-08-10 16:08:15 +02:00
NetPlayProto.h Add md5 testing to netplay 2016-07-16 22:48:46 +02:00
NetPlayServer.cpp Merge pull request #3588 from Aestek/feature/improve-netplay-dialog 2016-07-26 02:12:22 +02:00
NetPlayServer.h Fix bogus UPnP requests 2016-07-23 20:04:07 +02:00
PatchEngine.cpp PatchEngine: Clear active codes on shutdown 2016-07-01 13:07:57 +02:00
PatchEngine.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
State.cpp CoreTiming: Data structure cleanup 2016-09-03 12:46:14 +10:00
State.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00