diff options
author | Subv <subv2112@gmail.com> | 2017-07-22 04:17:57 +0200 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2017-09-10 22:13:41 +0200 |
commit | 6d2734a074f44a24129db850339677d8d7b436aa (patch) | |
tree | 418be08a059813466e7ed4495fd6198b16aa4ddc /src/core/hle/kernel/vm_manager.cpp | |
parent | Added missing parts in libnetwork (#2838) (diff) | |
download | yuzu-6d2734a074f44a24129db850339677d8d7b436aa.tar yuzu-6d2734a074f44a24129db850339677d8d7b436aa.tar.gz yuzu-6d2734a074f44a24129db850339677d8d7b436aa.tar.bz2 yuzu-6d2734a074f44a24129db850339677d8d7b436aa.tar.lz yuzu-6d2734a074f44a24129db850339677d8d7b436aa.tar.xz yuzu-6d2734a074f44a24129db850339677d8d7b436aa.tar.zst yuzu-6d2734a074f44a24129db850339677d8d7b436aa.zip |
Diffstat (limited to 'src/core/hle/kernel/vm_manager.cpp')
-rw-r--r-- | src/core/hle/kernel/vm_manager.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp index cef1f7fa8..7a007c065 100644 --- a/src/core/hle/kernel/vm_manager.cpp +++ b/src/core/hle/kernel/vm_manager.cpp @@ -56,6 +56,10 @@ void VMManager::Reset() { initial_vma.size = MAX_ADDRESS; vma_map.emplace(initial_vma.base, initial_vma); + page_table.pointers.fill(nullptr); + page_table.attributes.fill(Memory::PageType::Unmapped); + page_table.cached_res_count.fill(0); + UpdatePageTableForVMA(initial_vma); } @@ -328,16 +332,17 @@ VMManager::VMAIter VMManager::MergeAdjacent(VMAIter iter) { void VMManager::UpdatePageTableForVMA(const VirtualMemoryArea& vma) { switch (vma.type) { case VMAType::Free: - Memory::UnmapRegion(vma.base, vma.size); + Memory::UnmapRegion(page_table, vma.base, vma.size); break; case VMAType::AllocatedMemoryBlock: - Memory::MapMemoryRegion(vma.base, vma.size, vma.backing_block->data() + vma.offset); + Memory::MapMemoryRegion(page_table, vma.base, vma.size, + vma.backing_block->data() + vma.offset); break; case VMAType::BackingMemory: - Memory::MapMemoryRegion(vma.base, vma.size, vma.backing_memory); + Memory::MapMemoryRegion(page_table, vma.base, vma.size, vma.backing_memory); break; case VMAType::MMIO: - Memory::MapIoRegion(vma.base, vma.size, vma.mmio_handler); + Memory::MapIoRegion(page_table, vma.base, vma.size, vma.mmio_handler); break; } } |