aboutsummaryrefslogtreecommitdiff
path: root/src/core/memory.cpp
diff options
context:
space:
mode:
authorMerryMage <MerryMage@users.noreply.github.com>2020-07-05 11:25:08 +0100
committerMerryMage <MerryMage@users.noreply.github.com>2020-07-05 12:54:19 +0100
commitf0019f217673a39a282a4675a90599d9dfc10178 (patch)
tree44aae6e5b8d3cfb31925e3d9e324000ca50f6dc6 /src/core/memory.cpp
parentb2997e54021f87ae5e88d9782e0ceb72b8b4c361 (diff)
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 7def007689..2c55889334 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -548,9 +548,9 @@ struct Memory::Impl {
// longer exist, and we should just leave the pagetable entry blank.
page_type = Common::PageType::Unmapped;
} else {
- page_type = Common::PageType::Memory;
current_page_table->pointers[vaddr >> PAGE_BITS] =
pointer - (vaddr & ~PAGE_MASK);
+ page_type = Common::PageType::Memory;
}
break;
}
@@ -591,9 +591,12 @@ struct Memory::Impl {
base + page_table.pointers.size());
if (!target) {
+ ASSERT_MSG(type != Common::PageType::Memory,
+ "Mapping memory page without a pointer @ {:016x}", base * PAGE_SIZE);
+
while (base != end) {
- page_table.pointers[base] = nullptr;
page_table.attributes[base] = type;
+ page_table.pointers[base] = nullptr;
page_table.backing_addr[base] = 0;
base += 1;