summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/mem_map.cpp31
-rw-r--r--src/core/mem_map.h8
2 files changed, 8 insertions, 31 deletions
diff --git a/src/core/mem_map.cpp b/src/core/mem_map.cpp
index 66d95ed27..bf814b945 100644
--- a/src/core/mem_map.cpp
+++ b/src/core/mem_map.cpp
@@ -21,18 +21,9 @@
21 21
22namespace Memory { 22namespace Memory {
23 23
24u8* g_exefs_code; ///< ExeFS:/.code is loaded here
25u8* g_heap; ///< Application heap (main memory)
26u8* g_shared_mem; ///< Shared memory
27u8* g_heap_linear; ///< Linear heap
28u8* g_vram; ///< Video memory (VRAM) pointer
29u8* g_dsp_mem; ///< DSP memory
30u8* g_tls_mem; ///< TLS memory
31
32namespace { 24namespace {
33 25
34struct MemoryArea { 26struct MemoryArea {
35 u8** ptr;
36 u32 base; 27 u32 base;
37 u32 size; 28 u32 size;
38 const char* name; 29 const char* name;
@@ -40,13 +31,13 @@ struct MemoryArea {
40 31
41// We don't declare the IO regions in here since its handled by other means. 32// We don't declare the IO regions in here since its handled by other means.
42static MemoryArea memory_areas[] = { 33static MemoryArea memory_areas[] = {
43 {&g_exefs_code, PROCESS_IMAGE_VADDR, PROCESS_IMAGE_MAX_SIZE, "Process Image"}, 34 {PROCESS_IMAGE_VADDR, PROCESS_IMAGE_MAX_SIZE, "Process Image"}, // ExeFS:/.code is loaded here
44 {&g_heap, HEAP_VADDR, HEAP_SIZE, "Heap"}, 35 {HEAP_VADDR, HEAP_SIZE, "Heap"}, // Application heap (main memory)
45 {&g_shared_mem, SHARED_MEMORY_VADDR, SHARED_MEMORY_SIZE, "Shared Memory"}, 36 {SHARED_MEMORY_VADDR, SHARED_MEMORY_SIZE, "Shared Memory"}, // Shared memory
46 {&g_heap_linear, LINEAR_HEAP_VADDR, LINEAR_HEAP_SIZE, "Linear Heap"}, 37 {LINEAR_HEAP_VADDR, LINEAR_HEAP_SIZE, "Linear Heap"}, // Linear heap (main memory)
47 {&g_vram, VRAM_VADDR, VRAM_SIZE, "VRAM"}, 38 {VRAM_VADDR, VRAM_SIZE, "VRAM"}, // Video memory (VRAM)
48 {&g_dsp_mem, DSP_RAM_VADDR, DSP_RAM_SIZE, "DSP RAM"}, 39 {DSP_RAM_VADDR, DSP_RAM_SIZE, "DSP RAM"}, // DSP memory
49 {&g_tls_mem, TLS_AREA_VADDR, TLS_AREA_SIZE, "TLS Area"}, 40 {TLS_AREA_VADDR, TLS_AREA_SIZE, "TLS Area"}, // TLS memory
50}; 41};
51 42
52/// Represents a block of memory mapped by ControlMemory/MapMemoryBlock 43/// Represents a block of memory mapped by ControlMemory/MapMemoryBlock
@@ -150,7 +141,6 @@ void Init() {
150 141
151 for (MemoryArea& area : memory_areas) { 142 for (MemoryArea& area : memory_areas) {
152 auto block = std::make_shared<std::vector<u8>>(area.size); 143 auto block = std::make_shared<std::vector<u8>>(area.size);
153 *area.ptr = block->data(); // TODO(yuriks): Remove
154 address_space.MapMemoryBlock(area.base, std::move(block), 0, area.size, MemoryState::Private).Unwrap(); 144 address_space.MapMemoryBlock(area.base, std::move(block), 0, area.size, MemoryState::Private).Unwrap();
155 } 145 }
156 146
@@ -162,19 +152,14 @@ void Init() {
162 (u8*)&SharedPage::shared_page, SHARED_PAGE_SIZE, MemoryState::Shared).MoveFrom(); 152 (u8*)&SharedPage::shared_page, SHARED_PAGE_SIZE, MemoryState::Shared).MoveFrom();
163 address_space.Reprotect(shared_page_vma, VMAPermission::Read); 153 address_space.Reprotect(shared_page_vma, VMAPermission::Read);
164 154
165 LOG_DEBUG(HW_Memory, "initialized OK, RAM at %p", g_heap); 155 LOG_DEBUG(HW_Memory, "initialized OK");
166} 156}
167 157
168void Shutdown() { 158void Shutdown() {
169 heap_map.clear(); 159 heap_map.clear();
170 heap_linear_map.clear(); 160 heap_linear_map.clear();
171
172 address_space.Reset(); 161 address_space.Reset();
173 162
174 for (MemoryArea& area : memory_areas) {
175 *area.ptr = nullptr;
176 }
177
178 LOG_DEBUG(HW_Memory, "shutdown OK"); 163 LOG_DEBUG(HW_Memory, "shutdown OK");
179} 164}
180 165
diff --git a/src/core/mem_map.h b/src/core/mem_map.h
index 945815cd6..ba50914a8 100644
--- a/src/core/mem_map.h
+++ b/src/core/mem_map.h
@@ -8,14 +8,6 @@
8 8
9namespace Memory { 9namespace Memory {
10 10
11extern u8* g_exefs_code; ///< ExeFS:/.code is loaded here
12extern u8* g_heap; ///< Application heap (main memory)
13extern u8* g_shared_mem; ///< Shared memory
14extern u8* g_heap_linear; ///< Linear heap (main memory)
15extern u8* g_vram; ///< Video memory (VRAM)
16extern u8* g_dsp_mem; ///< DSP memory
17extern u8* g_tls_mem; ///< TLS memory
18
19void Init(); 11void Init();
20void Shutdown(); 12void Shutdown();
21 13