summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/OpenALStream.cpp
diff options
context:
space:
mode:
authormagumagu <magumagu9@gmail.com>2016-06-25 18:58:09 -0700
committerdegasus <wickmarkus@web.de>2016-09-06 08:43:22 +0200
commitd557310371c3c38daebba662ef80fcc8a3c77895 (patch)
tree5206b26a422750c4a0696b9f2113e20fcbf7504c /Source/Core/AudioCommon/OpenALStream.cpp
parent3e0355e7f685eafaac7a134a7aad86907ec0fafb (diff)
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.
Diffstat (limited to 'Source/Core/AudioCommon/OpenALStream.cpp')
0 files changed, 0 insertions, 0 deletions