summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/mem_map.cpp5
-rw-r--r--src/core/mem_map.h4
-rw-r--r--src/core/mem_map_funcs.cpp14
3 files changed, 16 insertions, 7 deletions
diff --git a/src/core/mem_map.cpp b/src/core/mem_map.cpp
index 44b4b07b7..180829239 100644
--- a/src/core/mem_map.cpp
+++ b/src/core/mem_map.cpp
@@ -16,9 +16,8 @@ u8* g_base = NULL; ///< The base pointer to the aut
16 16
17MemArena g_arena; ///< The MemArena class 17MemArena g_arena; ///< The MemArena class
18 18
19u8* g_bootrom = NULL; ///< Bootrom physical memory 19u8* g_heap_gsp = NULL; ///< GSP heap (main memory)
20u8* g_heap_gsp = NULL; 20u8* g_heap = NULL; ///< Application heap (main memory)
21u8* g_heap = NULL;
22u8* g_vram = NULL; ///< Video memory (VRAM) pointer 21u8* g_vram = NULL; ///< Video memory (VRAM) pointer
23 22
24u8* g_physical_bootrom = NULL; ///< Bootrom physical memory 23u8* g_physical_bootrom = NULL; ///< Bootrom physical memory
diff --git a/src/core/mem_map.h b/src/core/mem_map.h
index a1fa90f3e..9ca05cc4e 100644
--- a/src/core/mem_map.h
+++ b/src/core/mem_map.h
@@ -34,6 +34,7 @@ enum {
34 VRAM_MASK = 0x007FFFFF, 34 VRAM_MASK = 0x007FFFFF,
35 FCRAM_MASK = (FCRAM_SIZE - 1), ///< FCRAM mask 35 FCRAM_MASK = (FCRAM_SIZE - 1), ///< FCRAM mask
36 SCRATCHPAD_MASK = (SCRATCHPAD_SIZE - 1), ///< Scratchpad memory mask 36 SCRATCHPAD_MASK = (SCRATCHPAD_SIZE - 1), ///< Scratchpad memory mask
37 HEAP_GSP_MASK = (HEAP_GSP_SIZE - 1),
37 HEAP_MASK = (HEAP_SIZE - 1), 38 HEAP_MASK = (HEAP_SIZE - 1),
38 39
39 FCRAM_PADDR = 0x20000000, ///< FCRAM physical address 40 FCRAM_PADDR = 0x20000000, ///< FCRAM physical address
@@ -62,7 +63,8 @@ extern u8 *g_base;
62// These are guaranteed to point to "low memory" addresses (sub-32-bit). 63// These are guaranteed to point to "low memory" addresses (sub-32-bit).
63// 64-bit: Pointers to low-mem (sub-0x10000000) mirror 64// 64-bit: Pointers to low-mem (sub-0x10000000) mirror
64// 32-bit: Same as the corresponding physical/virtual pointers. 65// 32-bit: Same as the corresponding physical/virtual pointers.
65extern u8* g_heap; ///< Main memory 66extern u8* g_heap_gsp; ///< GSP heap (main memory)
67extern u8* g_heap; ///< Application heap (main memory)
66extern u8* g_vram; ///< Video memory (VRAM) 68extern u8* g_vram; ///< Video memory (VRAM)
67 69
68void Init(); 70void Init();
diff --git a/src/core/mem_map_funcs.cpp b/src/core/mem_map_funcs.cpp
index 40d9dab3a..5ab1b6e92 100644
--- a/src/core/mem_map_funcs.cpp
+++ b/src/core/mem_map_funcs.cpp
@@ -40,6 +40,10 @@ inline void _Read(T &var, const u32 addr) {
40 } else if ((vaddr & 0xFF000000) == 0x10000000 || (vaddr & 0xFF000000) == 0x1E000000) { 40 } else if ((vaddr & 0xFF000000) == 0x10000000 || (vaddr & 0xFF000000) == 0x1E000000) {
41 HW::Read<T>(var, vaddr); 41 HW::Read<T>(var, vaddr);
42 42
43 // FCRAM - GSP heap
44 } else if ((vaddr > HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) {
45 var = *((const T*)&g_heap_gsp[vaddr & HEAP_GSP_MASK]);
46
43 // FCRAM - application heap 47 // FCRAM - application heap
44 } else if ((vaddr > HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { 48 } else if ((vaddr > HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) {
45 var = *((const T*)&g_heap[vaddr & HEAP_MASK]); 49 var = *((const T*)&g_heap[vaddr & HEAP_MASK]);
@@ -68,8 +72,8 @@ inline void _Write(u32 addr, const T data) {
68 HW::Write<T>(vaddr, data); 72 HW::Write<T>(vaddr, data);
69 73
70 // FCRAM - GSP heap 74 // FCRAM - GSP heap
71 //} else if ((vaddr > HEAP_GSP_VADDR) && (vaddr < HEAP_VADDR_GSP_END)) { 75 } else if ((vaddr > HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) {
72 // *(T*)&g_heap_gsp[vaddr & FCRAM_MASK] = data; 76 *(T*)&g_heap_gsp[vaddr & HEAP_GSP_MASK] = data;
73 77
74 // FCRAM - application heap 78 // FCRAM - application heap
75 } else if ((vaddr > HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { 79 } else if ((vaddr > HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) {
@@ -98,8 +102,12 @@ inline void _Write(u32 addr, const T data) {
98u8 *GetPointer(const u32 addr) { 102u8 *GetPointer(const u32 addr) {
99 const u32 vaddr = _AddressPhysicalToVirtual(addr); 103 const u32 vaddr = _AddressPhysicalToVirtual(addr);
100 104
105 // FCRAM - GSP heap
106 if ((vaddr > HEAP_GSP_VADDR) && (vaddr < HEAP_GSP_VADDR_END)) {
107 return g_heap_gsp + (vaddr & HEAP_GSP_MASK);
108
101 // FCRAM - application heap 109 // FCRAM - application heap
102 if ((vaddr > HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) { 110 } else if ((vaddr > HEAP_VADDR) && (vaddr < HEAP_VADDR_END)) {
103 return g_heap + (vaddr & HEAP_MASK); 111 return g_heap + (vaddr & HEAP_MASK);
104 112
105 } else { 113 } else {