summaryrefslogtreecommitdiff
path: root/src/core/memory.cpp
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2015-08-05 21:26:52 -0300
committerGravatar Yuri Kunde Schlesner2015-08-16 01:03:47 -0300
commit74d4bc0af1d2f22105bf3c00efcb85613d59cc19 (patch)
tree171c5d0508d99f9ef4dcba2a0e3543eb9bdfa1db /src/core/memory.cpp
parentHLE: Remove empty ConfigMem and SharedPage Shutdown functions (diff)
downloadyuzu-74d4bc0af1d2f22105bf3c00efcb85613d59cc19.tar.gz
yuzu-74d4bc0af1d2f22105bf3c00efcb85613d59cc19.tar.xz
yuzu-74d4bc0af1d2f22105bf3c00efcb85613d59cc19.zip
Kernel: Add more infrastructure to support different memory layouts
This adds some structures necessary to support multiple memory regions in the future. It also adds support for different system memory types and the new linear heap mapping at 0x30000000.
Diffstat (limited to 'src/core/memory.cpp')
-rw-r--r--src/core/memory.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 935dac90f..cde390b8a 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -9,6 +9,7 @@
9#include "common/logging/log.h" 9#include "common/logging/log.h"
10#include "common/swap.h" 10#include "common/swap.h"
11 11
12#include "core/hle/kernel/process.h"
12#include "core/memory.h" 13#include "core/memory.h"
13#include "core/memory_setup.h" 14#include "core/memory_setup.h"
14 15
@@ -208,6 +209,8 @@ PAddr VirtualToPhysicalAddress(const VAddr addr) {
208 return addr - DSP_RAM_VADDR + DSP_RAM_PADDR; 209 return addr - DSP_RAM_VADDR + DSP_RAM_PADDR;
209 } else if (addr >= IO_AREA_VADDR && addr < IO_AREA_VADDR_END) { 210 } else if (addr >= IO_AREA_VADDR && addr < IO_AREA_VADDR_END) {
210 return addr - IO_AREA_VADDR + IO_AREA_PADDR; 211 return addr - IO_AREA_VADDR + IO_AREA_PADDR;
212 } else if (addr >= NEW_LINEAR_HEAP_VADDR && addr < NEW_LINEAR_HEAP_VADDR_END) {
213 return addr - NEW_LINEAR_HEAP_VADDR + FCRAM_PADDR;
211 } 214 }
212 215
213 LOG_ERROR(HW_Memory, "Unknown virtual address @ 0x%08X", addr); 216 LOG_ERROR(HW_Memory, "Unknown virtual address @ 0x%08X", addr);
@@ -221,7 +224,7 @@ VAddr PhysicalToVirtualAddress(const PAddr addr) {
221 } else if (addr >= VRAM_PADDR && addr < VRAM_PADDR_END) { 224 } else if (addr >= VRAM_PADDR && addr < VRAM_PADDR_END) {
222 return addr - VRAM_PADDR + VRAM_VADDR; 225 return addr - VRAM_PADDR + VRAM_VADDR;
223 } else if (addr >= FCRAM_PADDR && addr < FCRAM_PADDR_END) { 226 } else if (addr >= FCRAM_PADDR && addr < FCRAM_PADDR_END) {
224 return addr - FCRAM_PADDR + LINEAR_HEAP_VADDR; 227 return addr - FCRAM_PADDR + Kernel::g_current_process->GetLinearHeapBase();
225 } else if (addr >= DSP_RAM_PADDR && addr < DSP_RAM_PADDR_END) { 228 } else if (addr >= DSP_RAM_PADDR && addr < DSP_RAM_PADDR_END) {
226 return addr - DSP_RAM_PADDR + DSP_RAM_VADDR; 229 return addr - DSP_RAM_PADDR + DSP_RAM_VADDR;
227 } else if (addr >= IO_AREA_PADDR && addr < IO_AREA_PADDR_END) { 230 } else if (addr >= IO_AREA_PADDR && addr < IO_AREA_PADDR_END) {