summaryrefslogtreecommitdiff
path: root/src/core/mem_map_funcs.cpp
diff options
context:
space:
mode:
authorGravatar archshift2014-04-30 18:01:12 -0700
committerGravatar archshift2014-04-30 18:01:12 -0700
commitbdc3c999048420dfc937b3cf5362ffee008d6420 (patch)
treee3e935477a356b91439770dedd822ee6e56a0e03 /src/core/mem_map_funcs.cpp
parentSets OGL version for Qt; will only work with Qt5 (diff)
parentadded virtual memory map for ExeFS (where ARM11 code is supposed to be loaded) (diff)
downloadyuzu-bdc3c999048420dfc937b3cf5362ffee008d6420.tar.gz
yuzu-bdc3c999048420dfc937b3cf5362ffee008d6420.tar.xz
yuzu-bdc3c999048420dfc937b3cf5362ffee008d6420.zip
Merge commit upstream/master into issue-7-fix
Diffstat (limited to 'src/core/mem_map_funcs.cpp')
-rw-r--r--src/core/mem_map_funcs.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/core/mem_map_funcs.cpp b/src/core/mem_map_funcs.cpp
index c057a8114..2284b535c 100644
--- a/src/core/mem_map_funcs.cpp
+++ b/src/core/mem_map_funcs.cpp
@@ -25,7 +25,7 @@ u32 _VirtualAddress(const u32 addr) {
25 return VirtualAddressFromPhysical_FCRAM(addr); 25 return VirtualAddressFromPhysical_FCRAM(addr);
26 26
27 // Virtual address mapping FW0B 27 // Virtual address mapping FW0B
28 } else if ((addr >= FRAM_VADDR_FW0B) && (addr < FRAM_VADDR_FW0B_END)) { 28 } else if ((addr >= FCRAM_VADDR_FW0B) && (addr < FCRAM_VADDR_FW0B_END)) {
29 return VirtualAddressFromPhysical_FCRAM(addr); 29 return VirtualAddressFromPhysical_FCRAM(addr);
30 30
31 // Hardware IO 31 // Hardware IO
@@ -58,6 +58,10 @@ inline void _Read(T &var, const u32 addr) {
58 } else if ((vaddr >= HARDWARE_IO_VADDR) && (vaddr < HARDWARE_IO_VADDR_END)) { 58 } else if ((vaddr >= HARDWARE_IO_VADDR) && (vaddr < HARDWARE_IO_VADDR_END)) {
59 HW::Read<T>(var, vaddr); 59 HW::Read<T>(var, vaddr);
60 60
61 // ExeFS:/.code is loaded here
62 } else if ((vaddr >= EXEFS_CODE_VADDR) && (vaddr < EXEFS_CODE_VADDR_END)) {
63 var = *((const T*)&g_exefs_code[vaddr & EXEFS_CODE_MASK]);
64
61 // FCRAM - GSP heap 65 // FCRAM - GSP heap
62 } else if ((vaddr >= HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) { 66 } else if ((vaddr >= HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) {
63 var = *((const T*)&g_heap_gsp[vaddr & HEAP_GSP_MASK]); 67 var = *((const T*)&g_heap_gsp[vaddr & HEAP_GSP_MASK]);
@@ -94,6 +98,10 @@ inline void _Write(u32 addr, const T data) {
94 } else if ((vaddr >= HARDWARE_IO_VADDR) && (vaddr < HARDWARE_IO_VADDR_END)) { 98 } else if ((vaddr >= HARDWARE_IO_VADDR) && (vaddr < HARDWARE_IO_VADDR_END)) {
95 HW::Write<T>(vaddr, data); 99 HW::Write<T>(vaddr, data);
96 100
101 // ExeFS:/.code is loaded here
102 } else if ((vaddr >= EXEFS_CODE_VADDR) && (vaddr < EXEFS_CODE_VADDR_END)) {
103 *(T*)&g_exefs_code[vaddr & EXEFS_CODE_MASK] = data;
104
97 // FCRAM - GSP heap 105 // FCRAM - GSP heap
98 } else if ((vaddr >= HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) { 106 } else if ((vaddr >= HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) {
99 *(T*)&g_heap_gsp[vaddr & HEAP_GSP_MASK] = data; 107 *(T*)&g_heap_gsp[vaddr & HEAP_GSP_MASK] = data;
@@ -127,8 +135,12 @@ inline void _Write(u32 addr, const T data) {
127u8 *GetPointer(const u32 addr) { 135u8 *GetPointer(const u32 addr) {
128 const u32 vaddr = _VirtualAddress(addr); 136 const u32 vaddr = _VirtualAddress(addr);
129 137
138 // ExeFS:/.code is loaded here
139 if ((vaddr >= EXEFS_CODE_VADDR) && (vaddr < EXEFS_CODE_VADDR_END)) {
140 return g_exefs_code + (vaddr & EXEFS_CODE_MASK);
141
130 // FCRAM - GSP heap 142 // FCRAM - GSP heap
131 if ((vaddr >= HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) { 143 } else if ((vaddr >= HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) {
132 return g_heap_gsp + (vaddr & HEAP_GSP_MASK); 144 return g_heap_gsp + (vaddr & HEAP_GSP_MASK);
133 145
134 // FCRAM - application heap 146 // FCRAM - application heap