summaryrefslogtreecommitdiff
path: root/src/core/memory.cpp
diff options
context:
space:
mode:
authorGravatar MerryMage2020-07-05 11:25:08 +0100
committerGravatar MerryMage2020-07-05 12:54:19 +0100
commit76bd617b2de80c7b8a36ebd59e6ba483c54e78bc (patch)
tree44aae6e5b8d3cfb31925e3d9e324000ca50f6dc6 /src/core/memory.cpp
parentMerge pull request #4194 from ReinUsesLisp/fix-shader-cache (diff)
downloadyuzu-76bd617b2de80c7b8a36ebd59e6ba483c54e78bc.tar.gz
yuzu-76bd617b2de80c7b8a36ebd59e6ba483c54e78bc.tar.xz
yuzu-76bd617b2de80c7b8a36ebd59e6ba483c54e78bc.zip
memory: Set page-table pointers before setting attribute = Memory
Diffstat (limited to 'src/core/memory.cpp')
-rw-r--r--src/core/memory.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 7def00768..2c5588933 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -548,9 +548,9 @@ struct Memory::Impl {
548 // longer exist, and we should just leave the pagetable entry blank. 548 // longer exist, and we should just leave the pagetable entry blank.
549 page_type = Common::PageType::Unmapped; 549 page_type = Common::PageType::Unmapped;
550 } else { 550 } else {
551 page_type = Common::PageType::Memory;
552 current_page_table->pointers[vaddr >> PAGE_BITS] = 551 current_page_table->pointers[vaddr >> PAGE_BITS] =
553 pointer - (vaddr & ~PAGE_MASK); 552 pointer - (vaddr & ~PAGE_MASK);
553 page_type = Common::PageType::Memory;
554 } 554 }
555 break; 555 break;
556 } 556 }
@@ -591,9 +591,12 @@ struct Memory::Impl {
591 base + page_table.pointers.size()); 591 base + page_table.pointers.size());
592 592
593 if (!target) { 593 if (!target) {
594 ASSERT_MSG(type != Common::PageType::Memory,
595 "Mapping memory page without a pointer @ {:016x}", base * PAGE_SIZE);
596
594 while (base != end) { 597 while (base != end) {
595 page_table.pointers[base] = nullptr;
596 page_table.attributes[base] = type; 598 page_table.attributes[base] = type;
599 page_table.pointers[base] = nullptr;
597 page_table.backing_addr[base] = 0; 600 page_table.backing_addr[base] = 0;
598 601
599 base += 1; 602 base += 1;