summaryrefslogtreecommitdiff
path: root/src/core/memory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/memory.cpp')
-rw-r--r--src/core/memory.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 2afa0916d..5a27fa902 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -4,7 +4,6 @@
4 4
5#include <algorithm> 5#include <algorithm>
6#include <array> 6#include <array>
7#include <cinttypes>
8#include <cstring> 7#include <cstring>
9#include <boost/optional.hpp> 8#include <boost/optional.hpp>
10#include "common/assert.h" 9#include "common/assert.h"
@@ -47,7 +46,7 @@ static void MapPages(PageTable& page_table, VAddr base, u64 size, u8* memory, Pa
47 46
48 VAddr end = base + size; 47 VAddr end = base + size;
49 while (base != end) { 48 while (base != end) {
50 ASSERT_MSG(base < PAGE_TABLE_NUM_ENTRIES, "out of range mapping at %016" PRIX64, base); 49 ASSERT_MSG(base < PAGE_TABLE_NUM_ENTRIES, "out of range mapping at {:016X}", base);
51 50
52 page_table.attributes[base] = type; 51 page_table.attributes[base] = type;
53 page_table.pointers[base] = memory; 52 page_table.pointers[base] = memory;
@@ -59,14 +58,14 @@ static void MapPages(PageTable& page_table, VAddr base, u64 size, u8* memory, Pa
59} 58}
60 59
61void MapMemoryRegion(PageTable& page_table, VAddr base, u64 size, u8* target) { 60void MapMemoryRegion(PageTable& page_table, VAddr base, u64 size, u8* target) {
62 ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: %016" PRIX64, size); 61 ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: {:016X}", size);
63 ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: %016" PRIX64, base); 62 ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: {:016X}", base);
64 MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, target, PageType::Memory); 63 MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, target, PageType::Memory);
65} 64}
66 65
67void MapIoRegion(PageTable& page_table, VAddr base, u64 size, MemoryHookPointer mmio_handler) { 66void MapIoRegion(PageTable& page_table, VAddr base, u64 size, MemoryHookPointer mmio_handler) {
68 ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: %016" PRIX64, size); 67 ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: {:016X}", size);
69 ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: %016" PRIX64, base); 68 ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: {:016X}", base);
70 MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, nullptr, PageType::Special); 69 MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, nullptr, PageType::Special);
71 70
72 auto interval = boost::icl::discrete_interval<VAddr>::closed(base, base + size - 1); 71 auto interval = boost::icl::discrete_interval<VAddr>::closed(base, base + size - 1);
@@ -75,8 +74,8 @@ void MapIoRegion(PageTable& page_table, VAddr base, u64 size, MemoryHookPointer
75} 74}
76 75
77void UnmapRegion(PageTable& page_table, VAddr base, u64 size) { 76void UnmapRegion(PageTable& page_table, VAddr base, u64 size) {
78 ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: %016" PRIX64, size); 77 ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: {:016X}", size);
79 ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: %016" PRIX64, base); 78 ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: {:016X}", base);
80 MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, nullptr, PageType::Unmapped); 79 MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, nullptr, PageType::Unmapped);
81 80
82 auto interval = boost::icl::discrete_interval<VAddr>::closed(base, base + size - 1); 81 auto interval = boost::icl::discrete_interval<VAddr>::closed(base, base + size - 1);
@@ -172,7 +171,7 @@ T Read(const VAddr vaddr) {
172 NGLOG_ERROR(HW_Memory, "Unmapped Read{} @ {:#010X}", sizeof(T) * 8, vaddr); 171 NGLOG_ERROR(HW_Memory, "Unmapped Read{} @ {:#010X}", sizeof(T) * 8, vaddr);
173 return 0; 172 return 0;
174 case PageType::Memory: 173 case PageType::Memory:
175 ASSERT_MSG(false, "Mapped memory page without a pointer @ %016" PRIX64, vaddr); 174 ASSERT_MSG(false, "Mapped memory page without a pointer @ {:016X}", vaddr);
176 break; 175 break;
177 case PageType::RasterizerCachedMemory: { 176 case PageType::RasterizerCachedMemory: {
178 RasterizerFlushVirtualRegion(vaddr, sizeof(T), FlushMode::Flush); 177 RasterizerFlushVirtualRegion(vaddr, sizeof(T), FlushMode::Flush);
@@ -205,7 +204,7 @@ void Write(const VAddr vaddr, const T data) {
205 vaddr); 204 vaddr);
206 return; 205 return;
207 case PageType::Memory: 206 case PageType::Memory:
208 ASSERT_MSG(false, "Mapped memory page without a pointer @ %016" PRIX64, vaddr); 207 ASSERT_MSG(false, "Mapped memory page without a pointer @ {:016X}", vaddr);
209 break; 208 break;
210 case PageType::RasterizerCachedMemory: { 209 case PageType::RasterizerCachedMemory: {
211 RasterizerFlushVirtualRegion(vaddr, sizeof(T), FlushMode::Invalidate); 210 RasterizerFlushVirtualRegion(vaddr, sizeof(T), FlushMode::Invalidate);