diff options
| author | 2015-05-09 00:39:56 -0300 | |
|---|---|---|
| committer | 2015-05-09 01:29:52 -0300 | |
| commit | 1c0b87edc2d8262c06ea4c301bcfc884875f918b (patch) | |
| tree | f5b49739cc6cb7ca758111c5171c84b2c3152f5f /src/core/mem_map_funcs.cpp | |
| parent | Loader: Remove .bin file support (diff) | |
| download | yuzu-1c0b87edc2d8262c06ea4c301bcfc884875f918b.tar.gz yuzu-1c0b87edc2d8262c06ea4c301bcfc884875f918b.tar.xz yuzu-1c0b87edc2d8262c06ea4c301bcfc884875f918b.zip | |
Memory: Re-organize and rename memory area address constants
Diffstat (limited to 'src/core/mem_map_funcs.cpp')
| -rw-r--r-- | src/core/mem_map_funcs.cpp | 64 |
1 files changed, 26 insertions, 38 deletions
diff --git a/src/core/mem_map_funcs.cpp b/src/core/mem_map_funcs.cpp index 9a19c9bf8..f96ae6e9e 100644 --- a/src/core/mem_map_funcs.cpp +++ b/src/core/mem_map_funcs.cpp | |||
| @@ -29,7 +29,7 @@ VAddr PhysicalToVirtualAddress(const PAddr addr) { | |||
| 29 | } else if ((addr >= VRAM_PADDR) && (addr < VRAM_PADDR_END)) { | 29 | } else if ((addr >= VRAM_PADDR) && (addr < VRAM_PADDR_END)) { |
| 30 | return addr - VRAM_PADDR + VRAM_VADDR; | 30 | return addr - VRAM_PADDR + VRAM_VADDR; |
| 31 | } else if ((addr >= FCRAM_PADDR) && (addr < FCRAM_PADDR_END)) { | 31 | } else if ((addr >= FCRAM_PADDR) && (addr < FCRAM_PADDR_END)) { |
| 32 | return addr - FCRAM_PADDR + HEAP_LINEAR_VADDR; | 32 | return addr - FCRAM_PADDR + LINEAR_HEAP_VADDR; |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | LOG_ERROR(HW_Memory, "Unknown physical address @ 0x%08x", addr); | 35 | LOG_ERROR(HW_Memory, "Unknown physical address @ 0x%08x", addr); |
| @@ -46,8 +46,8 @@ PAddr VirtualToPhysicalAddress(const VAddr addr) { | |||
| 46 | return 0; | 46 | return 0; |
| 47 | } else if ((addr >= VRAM_VADDR) && (addr < VRAM_VADDR_END)) { | 47 | } else if ((addr >= VRAM_VADDR) && (addr < VRAM_VADDR_END)) { |
| 48 | return addr - VRAM_VADDR + VRAM_PADDR; | 48 | return addr - VRAM_VADDR + VRAM_PADDR; |
| 49 | } else if ((addr >= HEAP_LINEAR_VADDR) && (addr < HEAP_LINEAR_VADDR_END)) { | 49 | } else if ((addr >= LINEAR_HEAP_VADDR) && (addr < LINEAR_HEAP_VADDR_END)) { |
| 50 | return addr - HEAP_LINEAR_VADDR + FCRAM_PADDR; | 50 | return addr - LINEAR_HEAP_VADDR + FCRAM_PADDR; |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | LOG_ERROR(HW_Memory, "Unknown virtual address @ 0x%08x", addr); | 53 | LOG_ERROR(HW_Memory, "Unknown virtual address @ 0x%08x", addr); |
| @@ -61,16 +61,16 @@ inline void Read(T &var, const VAddr vaddr) { | |||
| 61 | // Could just do a base-relative read, too.... TODO | 61 | // Could just do a base-relative read, too.... TODO |
| 62 | 62 | ||
| 63 | // Kernel memory command buffer | 63 | // Kernel memory command buffer |
| 64 | if (vaddr >= KERNEL_MEMORY_VADDR && vaddr < KERNEL_MEMORY_VADDR_END) { | 64 | if (vaddr >= TLS_AREA_VADDR && vaddr < TLS_AREA_VADDR_END) { |
| 65 | var = *((const T*)&g_kernel_mem[vaddr - KERNEL_MEMORY_VADDR]); | 65 | var = *((const T*)&g_tls_mem[vaddr - TLS_AREA_VADDR]); |
| 66 | 66 | ||
| 67 | // ExeFS:/.code is loaded here | 67 | // ExeFS:/.code is loaded here |
| 68 | } else if ((vaddr >= EXEFS_CODE_VADDR) && (vaddr < EXEFS_CODE_VADDR_END)) { | 68 | } else if ((vaddr >= PROCESS_IMAGE_VADDR) && (vaddr < PROCESS_IMAGE_VADDR_END)) { |
| 69 | var = *((const T*)&g_exefs_code[vaddr - EXEFS_CODE_VADDR]); | 69 | var = *((const T*)&g_exefs_code[vaddr - PROCESS_IMAGE_VADDR]); |
| 70 | 70 | ||
| 71 | // FCRAM - linear heap | 71 | // FCRAM - linear heap |
| 72 | } else if ((vaddr >= HEAP_LINEAR_VADDR) && (vaddr < HEAP_LINEAR_VADDR_END)) { | 72 | } else if ((vaddr >= LINEAR_HEAP_VADDR) && (vaddr < LINEAR_HEAP_VADDR_END)) { |
| 73 | var = *((const T*)&g_heap_linear[vaddr - HEAP_LINEAR_VADDR]); | 73 | var = *((const T*)&g_heap_linear[vaddr - LINEAR_HEAP_VADDR]); |
| 74 | 74 | ||
| 75 | // FCRAM - application heap | 75 | // FCRAM - application heap |
| 76 | } else if ((vaddr >= HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { | 76 | } else if ((vaddr >= HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { |
| @@ -80,10 +80,6 @@ inline void Read(T &var, const VAddr vaddr) { | |||
| 80 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { | 80 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { |
| 81 | var = *((const T*)&g_shared_mem[vaddr - SHARED_MEMORY_VADDR]); | 81 | var = *((const T*)&g_shared_mem[vaddr - SHARED_MEMORY_VADDR]); |
| 82 | 82 | ||
| 83 | // System memory | ||
| 84 | } else if ((vaddr >= SYSTEM_MEMORY_VADDR) && (vaddr < SYSTEM_MEMORY_VADDR_END)) { | ||
| 85 | var = *((const T*)&g_system_mem[vaddr - SYSTEM_MEMORY_VADDR]); | ||
| 86 | |||
| 87 | // Config memory | 83 | // Config memory |
| 88 | } else if ((vaddr >= CONFIG_MEMORY_VADDR) && (vaddr < CONFIG_MEMORY_VADDR_END)) { | 84 | } else if ((vaddr >= CONFIG_MEMORY_VADDR) && (vaddr < CONFIG_MEMORY_VADDR_END)) { |
| 89 | ConfigMem::Read<T>(var, vaddr); | 85 | ConfigMem::Read<T>(var, vaddr); |
| @@ -93,8 +89,8 @@ inline void Read(T &var, const VAddr vaddr) { | |||
| 93 | SharedPage::Read<T>(var, vaddr); | 89 | SharedPage::Read<T>(var, vaddr); |
| 94 | 90 | ||
| 95 | // DSP memory | 91 | // DSP memory |
| 96 | } else if ((vaddr >= DSP_MEMORY_VADDR) && (vaddr < DSP_MEMORY_VADDR_END)) { | 92 | } else if ((vaddr >= DSP_RAM_VADDR) && (vaddr < DSP_RAM_VADDR_END)) { |
| 97 | var = *((const T*)&g_dsp_mem[vaddr - DSP_MEMORY_VADDR]); | 93 | var = *((const T*)&g_dsp_mem[vaddr - DSP_RAM_VADDR]); |
| 98 | 94 | ||
| 99 | // VRAM | 95 | // VRAM |
| 100 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { | 96 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { |
| @@ -109,16 +105,16 @@ template <typename T> | |||
| 109 | inline void Write(const VAddr vaddr, const T data) { | 105 | inline void Write(const VAddr vaddr, const T data) { |
| 110 | 106 | ||
| 111 | // Kernel memory command buffer | 107 | // Kernel memory command buffer |
| 112 | if (vaddr >= KERNEL_MEMORY_VADDR && vaddr < KERNEL_MEMORY_VADDR_END) { | 108 | if (vaddr >= TLS_AREA_VADDR && vaddr < TLS_AREA_VADDR_END) { |
| 113 | *(T*)&g_kernel_mem[vaddr - KERNEL_MEMORY_VADDR] = data; | 109 | *(T*)&g_tls_mem[vaddr - TLS_AREA_VADDR] = data; |
| 114 | 110 | ||
| 115 | // ExeFS:/.code is loaded here | 111 | // ExeFS:/.code is loaded here |
| 116 | } else if ((vaddr >= EXEFS_CODE_VADDR) && (vaddr < EXEFS_CODE_VADDR_END)) { | 112 | } else if ((vaddr >= PROCESS_IMAGE_VADDR) && (vaddr < PROCESS_IMAGE_VADDR_END)) { |
| 117 | *(T*)&g_exefs_code[vaddr - EXEFS_CODE_VADDR] = data; | 113 | *(T*)&g_exefs_code[vaddr - PROCESS_IMAGE_VADDR] = data; |
| 118 | 114 | ||
| 119 | // FCRAM - linear heap | 115 | // FCRAM - linear heap |
| 120 | } else if ((vaddr >= HEAP_LINEAR_VADDR) && (vaddr < HEAP_LINEAR_VADDR_END)) { | 116 | } else if ((vaddr >= LINEAR_HEAP_VADDR) && (vaddr < LINEAR_HEAP_VADDR_END)) { |
| 121 | *(T*)&g_heap_linear[vaddr - HEAP_LINEAR_VADDR] = data; | 117 | *(T*)&g_heap_linear[vaddr - LINEAR_HEAP_VADDR] = data; |
| 122 | 118 | ||
| 123 | // FCRAM - application heap | 119 | // FCRAM - application heap |
| 124 | } else if ((vaddr >= HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { | 120 | } else if ((vaddr >= HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { |
| @@ -128,17 +124,13 @@ inline void Write(const VAddr vaddr, const T data) { | |||
| 128 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { | 124 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { |
| 129 | *(T*)&g_shared_mem[vaddr - SHARED_MEMORY_VADDR] = data; | 125 | *(T*)&g_shared_mem[vaddr - SHARED_MEMORY_VADDR] = data; |
| 130 | 126 | ||
| 131 | // System memory | ||
| 132 | } else if ((vaddr >= SYSTEM_MEMORY_VADDR) && (vaddr < SYSTEM_MEMORY_VADDR_END)) { | ||
| 133 | *(T*)&g_system_mem[vaddr - SYSTEM_MEMORY_VADDR] = data; | ||
| 134 | |||
| 135 | // VRAM | 127 | // VRAM |
| 136 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { | 128 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { |
| 137 | *(T*)&g_vram[vaddr - VRAM_VADDR] = data; | 129 | *(T*)&g_vram[vaddr - VRAM_VADDR] = data; |
| 138 | 130 | ||
| 139 | // DSP memory | 131 | // DSP memory |
| 140 | } else if ((vaddr >= DSP_MEMORY_VADDR) && (vaddr < DSP_MEMORY_VADDR_END)) { | 132 | } else if ((vaddr >= DSP_RAM_VADDR) && (vaddr < DSP_RAM_VADDR_END)) { |
| 141 | *(T*)&g_dsp_mem[vaddr - DSP_MEMORY_VADDR] = data; | 133 | *(T*)&g_dsp_mem[vaddr - DSP_RAM_VADDR] = data; |
| 142 | 134 | ||
| 143 | //} else if ((vaddr & 0xFFFF0000) == 0x1FF80000) { | 135 | //} else if ((vaddr & 0xFFFF0000) == 0x1FF80000) { |
| 144 | // ASSERT_MSG(MEMMAP, false, "umimplemented write to Configuration Memory"); | 136 | // ASSERT_MSG(MEMMAP, false, "umimplemented write to Configuration Memory"); |
| @@ -153,16 +145,16 @@ inline void Write(const VAddr vaddr, const T data) { | |||
| 153 | 145 | ||
| 154 | u8 *GetPointer(const VAddr vaddr) { | 146 | u8 *GetPointer(const VAddr vaddr) { |
| 155 | // Kernel memory command buffer | 147 | // Kernel memory command buffer |
| 156 | if (vaddr >= KERNEL_MEMORY_VADDR && vaddr < KERNEL_MEMORY_VADDR_END) { | 148 | if (vaddr >= TLS_AREA_VADDR && vaddr < TLS_AREA_VADDR_END) { |
| 157 | return g_kernel_mem + (vaddr - KERNEL_MEMORY_VADDR); | 149 | return g_tls_mem + (vaddr - TLS_AREA_VADDR); |
| 158 | 150 | ||
| 159 | // ExeFS:/.code is loaded here | 151 | // ExeFS:/.code is loaded here |
| 160 | } else if ((vaddr >= EXEFS_CODE_VADDR) && (vaddr < EXEFS_CODE_VADDR_END)) { | 152 | } else if ((vaddr >= PROCESS_IMAGE_VADDR) && (vaddr < PROCESS_IMAGE_VADDR_END)) { |
| 161 | return g_exefs_code + (vaddr - EXEFS_CODE_VADDR); | 153 | return g_exefs_code + (vaddr - PROCESS_IMAGE_VADDR); |
| 162 | 154 | ||
| 163 | // FCRAM - linear heap | 155 | // FCRAM - linear heap |
| 164 | } else if ((vaddr >= HEAP_LINEAR_VADDR) && (vaddr < HEAP_LINEAR_VADDR_END)) { | 156 | } else if ((vaddr >= LINEAR_HEAP_VADDR) && (vaddr < LINEAR_HEAP_VADDR_END)) { |
| 165 | return g_heap_linear + (vaddr - HEAP_LINEAR_VADDR); | 157 | return g_heap_linear + (vaddr - LINEAR_HEAP_VADDR); |
| 166 | 158 | ||
| 167 | // FCRAM - application heap | 159 | // FCRAM - application heap |
| 168 | } else if ((vaddr >= HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { | 160 | } else if ((vaddr >= HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { |
| @@ -172,10 +164,6 @@ u8 *GetPointer(const VAddr vaddr) { | |||
| 172 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { | 164 | } else if ((vaddr >= SHARED_MEMORY_VADDR) && (vaddr < SHARED_MEMORY_VADDR_END)) { |
| 173 | return g_shared_mem + (vaddr - SHARED_MEMORY_VADDR); | 165 | return g_shared_mem + (vaddr - SHARED_MEMORY_VADDR); |
| 174 | 166 | ||
| 175 | // System memory | ||
| 176 | } else if ((vaddr >= SYSTEM_MEMORY_VADDR) && (vaddr < SYSTEM_MEMORY_VADDR_END)) { | ||
| 177 | return g_system_mem + (vaddr - SYSTEM_MEMORY_VADDR); | ||
| 178 | |||
| 179 | // VRAM | 167 | // VRAM |
| 180 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { | 168 | } else if ((vaddr >= VRAM_VADDR) && (vaddr < VRAM_VADDR_END)) { |
| 181 | return g_vram + (vaddr - VRAM_VADDR); | 169 | return g_vram + (vaddr - VRAM_VADDR); |
| @@ -206,7 +194,7 @@ u32 MapBlock_Heap(u32 size, u32 operation, u32 permissions) { | |||
| 206 | u32 MapBlock_HeapLinear(u32 size, u32 operation, u32 permissions) { | 194 | u32 MapBlock_HeapLinear(u32 size, u32 operation, u32 permissions) { |
| 207 | MemoryBlock block; | 195 | MemoryBlock block; |
| 208 | 196 | ||
| 209 | block.base_address = HEAP_LINEAR_VADDR; | 197 | block.base_address = LINEAR_HEAP_VADDR; |
| 210 | block.size = size; | 198 | block.size = size; |
| 211 | block.operation = operation; | 199 | block.operation = operation; |
| 212 | block.permissions = permissions; | 200 | block.permissions = permissions; |