diff options
Diffstat (limited to 'src/core/memory.cpp')
| -rw-r--r-- | src/core/memory.cpp | 19 |
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 | ||
| 61 | void MapMemoryRegion(PageTable& page_table, VAddr base, u64 size, u8* target) { | 60 | void 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 | ||
| 67 | void MapIoRegion(PageTable& page_table, VAddr base, u64 size, MemoryHookPointer mmio_handler) { | 66 | void 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 | ||
| 77 | void UnmapRegion(PageTable& page_table, VAddr base, u64 size) { | 76 | void 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); |