diff options
| author | 2014-05-06 23:32:04 -0400 | |
|---|---|---|
| committer | 2014-05-06 23:32:04 -0400 | |
| commit | a3a383cb7a9b8e83c1201fd38d08b2932e3d58df (patch) | |
| tree | a7ddcdf3e6081811046fd3be41b941bf9a6d089f /src | |
| parent | added config_mem module for HLE of firmware configuration memory settings (diff) | |
| download | yuzu-a3a383cb7a9b8e83c1201fd38d08b2932e3d58df.tar.gz yuzu-a3a383cb7a9b8e83c1201fd38d08b2932e3d58df.tar.xz yuzu-a3a383cb7a9b8e83c1201fd38d08b2932e3d58df.zip | |
added mem_map read for config_mem
Diffstat (limited to '')
| -rw-r--r-- | src/core/mem_map.h | 5 | ||||
| -rw-r--r-- | src/core/mem_map_funcs.cpp | 19 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/core/mem_map.h b/src/core/mem_map.h index 62a8b82a8..83c251ac9 100644 --- a/src/core/mem_map.h +++ b/src/core/mem_map.h | |||
| @@ -32,6 +32,11 @@ enum { | |||
| 32 | SHARED_MEMORY_VADDR_END = (SHARED_MEMORY_VADDR + SHARED_MEMORY_SIZE), | 32 | SHARED_MEMORY_VADDR_END = (SHARED_MEMORY_VADDR + SHARED_MEMORY_SIZE), |
| 33 | SHARED_MEMORY_MASK = (SHARED_MEMORY_SIZE - 1), | 33 | SHARED_MEMORY_MASK = (SHARED_MEMORY_SIZE - 1), |
| 34 | 34 | ||
| 35 | CONFIG_MEMORY_SIZE = 0x00001000, ///< Configuration memory size | ||
| 36 | CONFIG_MEMORY_VADDR = 0x1FF80000, ///< Configuration memory virtual address | ||
| 37 | CONFIG_MEMORY_VADDR_END = (CONFIG_MEMORY_VADDR + CONFIG_MEMORY_SIZE), | ||
| 38 | CONFIG_MEMORY_MASK = (CONFIG_MEMORY_SIZE - 1), | ||
| 39 | |||
| 35 | EXEFS_CODE_SIZE = 0x03F00000, | 40 | EXEFS_CODE_SIZE = 0x03F00000, |
| 36 | EXEFS_CODE_VADDR = 0x00100000, ///< ExeFS:/.code is loaded here | 41 | EXEFS_CODE_VADDR = 0x00100000, ///< ExeFS:/.code is loaded here |
| 37 | EXEFS_CODE_VADDR_END = (EXEFS_CODE_VADDR + EXEFS_CODE_SIZE), | 42 | EXEFS_CODE_VADDR_END = (EXEFS_CODE_VADDR + EXEFS_CODE_SIZE), |
diff --git a/src/core/mem_map_funcs.cpp b/src/core/mem_map_funcs.cpp index 2284b535c..4812a8d22 100644 --- a/src/core/mem_map_funcs.cpp +++ b/src/core/mem_map_funcs.cpp | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #include "core/mem_map.h" | 9 | #include "core/mem_map.h" |
| 10 | #include "core/hw/hw.h" | 10 | #include "core/hw/hw.h" |
| 11 | #include "hle/hle.h" | 11 | #include "hle/hle.h" |
| 12 | #include "hle/config_mem.h" | ||
| 12 | 13 | ||
| 13 | namespace Memory { | 14 | namespace Memory { |
| 14 | 15 | ||
| @@ -46,7 +47,7 @@ inline void _Read(T &var, const u32 addr) { | |||
| 46 | // Could just do a base-relative read, too.... TODO | 47 | // Could just do a base-relative read, too.... TODO |
| 47 | 48 | ||
| 48 | const u32 vaddr = _VirtualAddress(addr); | 49 | const u32 vaddr = _VirtualAddress(addr); |
| 49 | 50 | ||
| 50 | // Memory allocated for HLE use that can be addressed from the emulated application | 51 | // Memory allocated for HLE use that can be addressed from the emulated application |
| 51 | // The primary use of this is sharing a commandbuffer between the HLE OS (syscore) and the LLE | 52 | // The primary use of this is sharing a commandbuffer between the HLE OS (syscore) and the LLE |
| 52 | // core running the user application (appcore) | 53 | // core running the user application (appcore) |
| @@ -74,6 +75,10 @@ inline void _Read(T &var, const u32 addr) { | |||
| 74 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { | 75 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { |
| 75 | var = *((const T*)&g_shared_mem[vaddr & SHARED_MEMORY_MASK]); | 76 | var = *((const T*)&g_shared_mem[vaddr & SHARED_MEMORY_MASK]); |
| 76 | 77 | ||
| 78 | // Config memory | ||
| 79 | } else if ((vaddr >= CONFIG_MEMORY_VADDR) && (vaddr < CONFIG_MEMORY_VADDR_END)) { | ||
| 80 | ConfigMem::Read<T>(var, vaddr); | ||
| 81 | |||
| 77 | // VRAM | 82 | // VRAM |
| 78 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { | 83 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { |
| 79 | var = *((const T*)&g_vram[vaddr & VRAM_MASK]); | 84 | var = *((const T*)&g_vram[vaddr & VRAM_MASK]); |
| @@ -118,12 +123,12 @@ inline void _Write(u32 addr, const T data) { | |||
| 118 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { | 123 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { |
| 119 | *(T*)&g_vram[vaddr & VRAM_MASK] = data; | 124 | *(T*)&g_vram[vaddr & VRAM_MASK] = data; |
| 120 | 125 | ||
| 121 | } else if ((vaddr & 0xFFF00000) == 0x1FF00000) { | 126 | //} else if ((vaddr & 0xFFF00000) == 0x1FF00000) { |
| 122 | _assert_msg_(MEMMAP, false, "umimplemented write to DSP memory"); | 127 | // _assert_msg_(MEMMAP, false, "umimplemented write to DSP memory"); |
| 123 | } else if ((vaddr & 0xFFFF0000) == 0x1FF80000) { | 128 | //} else if ((vaddr & 0xFFFF0000) == 0x1FF80000) { |
| 124 | _assert_msg_(MEMMAP, false, "umimplemented write to Configuration Memory"); | 129 | // _assert_msg_(MEMMAP, false, "umimplemented write to Configuration Memory"); |
| 125 | } else if ((vaddr & 0xFFFFF000) == 0x1FF81000) { | 130 | //} else if ((vaddr & 0xFFFFF000) == 0x1FF81000) { |
| 126 | _assert_msg_(MEMMAP, false, "umimplemented write to shared page"); | 131 | // _assert_msg_(MEMMAP, false, "umimplemented write to shared page"); |
| 127 | 132 | ||
| 128 | // Error out... | 133 | // Error out... |
| 129 | } else { | 134 | } else { |