dolphin/Source/Core/Common
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
..
Crypto Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GL Further fixes to the formatting change. WX sucks. 2016-06-24 12:16:10 +02:00
Logging Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Analytics.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Analytics.h Remove curl version check / include curl.h 2016-08-04 22:39:45 -05:00
Arm64Emitter.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Arm64Emitter.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ArmCommon.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ArmCPUDetect.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Assert.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Atomic_GCC.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Atomic_Win32.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Atomic.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
BitField.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
BitField.natvis Correct capitalization of 'Visual Studio' 2015-11-02 17:12:09 +13:00
BitSet.h constexpr added to BitSet.h. conflicts solved 2016-06-25 10:58:53 -03:00
BlockingLoop.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
BreakPoints.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
BreakPoints.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
CDUtils.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
CDUtils.h Add missing license headers 2015-05-25 13:11:47 +02:00
ChunkFile.h CoreTiming: Data structure cleanup 2016-09-03 12:46:14 +10:00
CMakeLists.txt Merge pull request #3859 from Aestek/feature/netplay-md5 2016-07-18 09:20:37 -05:00
CodeBlock.h Merge pull request #3386 from lioncash/memory 2016-08-19 11:04:45 +02:00
ColorUtil.cpp GCVolume: supports reading all opening.bnr information 2016-06-26 00:03:59 +10:00
ColorUtil.h GCVolume: supports reading all opening.bnr information 2016-06-26 00:03:59 +10:00
Common.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Common.vcxproj x64Emitter: Generify ABI_CallFunction variants 2016-08-31 22:54:47 -04:00
Common.vcxproj.filters x64Emitter: Generify ABI_CallFunction variants 2016-08-31 22:54:47 -04:00
CommonFuncs.h Undefine OpenBSD's system byteswap macros to pick up generic functions. 2016-07-17 20:18:50 -06:00
CommonPaths.h Add Wii sdcard to CommonPaths 2016-07-16 22:48:46 +02:00
CommonTypes.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
CPUDetect.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
DebugInterface.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ENetUtil.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ENetUtil.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Event.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
FifoQueue.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
FileSearch.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
FileSearch.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
FileUtil.cpp Merge pull request #3859 from Aestek/feature/netplay-md5 2016-07-18 09:20:37 -05:00
FileUtil.h Add Wii sdcard to CommonPaths 2016-07-16 22:48:46 +02:00
FixedSizeQueue.h FixedSizeQueue: modernize (std::array, std::move) 2016-06-25 17:39:54 +02:00
Flag.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
FPURoundMode.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GekkoDisassembler.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GekkoDisassembler.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GenericCPUDetect.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
GenericFPURoundMode.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Hash.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Hash.h More asterisks 2016-01-21 21:16:51 +01:00
IniFile.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
IniFile.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Intrinsics.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
JitRegister.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
JitRegister.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
LinearDiskCache.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
make_scmrev.h.js scmrev: Add "distributor" option. 2016-06-18 18:31:40 +02:00
MathUtil.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
MathUtil.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
MD5.cpp Add md5 testing to netplay 2016-07-16 22:48:46 +02:00
MD5.h Add md5 testing to netplay 2016-07-16 22:48:46 +02:00
MemArena.cpp Support for dynamic BAT modification (dynamic-bat). 2016-09-06 08:43:22 +02:00
MemArena.h Support for dynamic BAT modification (dynamic-bat). 2016-09-06 08:43:22 +02:00
MemoryUtil.cpp Common: namespace MemoryUtil 2016-08-07 13:03:07 -04:00
MemoryUtil.h MemoryUtil: Remove unimplemented/unused functions 2016-08-07 13:04:05 -04:00
Misc.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
MsgHandler.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
MsgHandler.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
NandPaths.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
NandPaths.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Network.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Network.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
NonCopyable.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
PcapFile.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
PcapFile.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
PerformanceCounter.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
PerformanceCounter.h Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
Profiler.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Profiler.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
SCMRevGen.vcxproj Fix SCMRevGen for 64-bit MSBuild 2016-07-13 17:28:55 +02:00
ScopeGuard.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
SDCardUtil.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
SDCardUtil.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
SettingsHandler.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
SettingsHandler.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
StringUtil.cpp OpenBSD doesn't support per-thread locales. 2016-07-17 04:08:44 -06:00
StringUtil.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
SymbolDB.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
SymbolDB.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
SysConf.cpp SysConf: Use range-based for loops in sysconf generation 2016-08-06 16:22:42 -04:00
SysConf.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Thread.cpp OpenBSD uses pthread_set_name_np() to set the name of a thread. 2016-07-17 04:09:46 -06:00
Thread.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Timer.cpp Add Configurable RTC 2016-07-19 11:20:02 -04:00
Timer.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
TraversalClient.cpp Improve netplay setup dialog UX 2016-07-23 20:58:51 +02:00
TraversalClient.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
TraversalProto.h Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
TraversalServer.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
ucrtFreadWorkaround.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Version.cpp Fix in-tree build (cmake .) on OS X. 2016-06-25 23:57:17 -04:00
x64ABI.cpp x64Emitter: Generify ABI_CallFunction variants 2016-08-31 22:54:47 -04:00
x64ABI.h x64Emitter: Generify ABI_CallFunction variants 2016-08-31 22:54:47 -04:00
x64CPUDetect.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
x64Emitter.cpp x64Emitter: Generify ABI_CallFunction variants 2016-08-31 22:54:47 -04:00
x64Emitter.h x64Emitter: Generify ABI_CallFunction variants 2016-08-31 22:54:47 -04:00
x64FPURoundMode.cpp Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
x64Reg.h x64Emitter: Generify ABI_CallFunction variants 2016-08-31 22:54:47 -04:00