summaryrefslogtreecommitdiff
path: root/src/core/hle/service
diff options
context:
space:
mode:
authorGravatar Lioncash2018-12-27 18:31:31 -0500
committerGravatar Lioncash2018-12-27 19:08:47 -0500
commitfbeaa330a35f93857c249aa5f69dfee6b09eefe0 (patch)
treecc9223890f85e66ba61d1b8fe1acfbbb55822f15 /src/core/hle/service
parentMerge pull request #1951 from Tinob/master (diff)
downloadyuzu-fbeaa330a35f93857c249aa5f69dfee6b09eefe0.tar.gz
yuzu-fbeaa330a35f93857c249aa5f69dfee6b09eefe0.tar.xz
yuzu-fbeaa330a35f93857c249aa5f69dfee6b09eefe0.zip
kernel/process: Remove most allocation functions from Process' interface
In all cases that these functions are needed, the VMManager can just be retrieved and used instead of providing the same functions in Process' interface. This also makes it a little nicer dependency-wise, since it gets rid of cases where the VMManager interface was being used, and then switched over to using the interface for a Process instance. Instead, it makes all accesses uniform and uses the VMManager instance for all necessary tasks. All the basic memory mapping functions did was forward to the Process' VMManager instance anyways.
Diffstat (limited to 'src/core/hle/service')
-rw-r--r--src/core/hle/service/ldr/ldr.cpp27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp
index 13bcefe07..9df7ac50f 100644
--- a/src/core/hle/service/ldr/ldr.cpp
+++ b/src/core/hle/service/ldr/ldr.cpp
@@ -318,14 +318,18 @@ public:
318 return; 318 return;
319 } 319 }
320 320
321 ASSERT(process->MirrorMemory(*map_address, nro_addr, nro_size, 321 ASSERT(vm_manager
322 Kernel::MemoryState::ModuleCodeStatic) == RESULT_SUCCESS); 322 .MirrorMemory(*map_address, nro_addr, nro_size,
323 ASSERT(process->UnmapMemory(nro_addr, 0, nro_size) == RESULT_SUCCESS); 323 Kernel::MemoryState::ModuleCodeStatic)
324 .IsSuccess());
325 ASSERT(vm_manager.UnmapRange(nro_addr, nro_size).IsSuccess());
324 326
325 if (bss_size > 0) { 327 if (bss_size > 0) {
326 ASSERT(process->MirrorMemory(*map_address + nro_size, bss_addr, bss_size, 328 ASSERT(vm_manager
327 Kernel::MemoryState::ModuleCodeStatic) == RESULT_SUCCESS); 329 .MirrorMemory(*map_address + nro_size, bss_addr, bss_size,
328 ASSERT(process->UnmapMemory(bss_addr, 0, bss_size) == RESULT_SUCCESS); 330 Kernel::MemoryState::ModuleCodeStatic)
331 .IsSuccess());
332 ASSERT(vm_manager.UnmapRange(bss_addr, bss_size).IsSuccess());
329 } 333 }
330 334
331 vm_manager.ReprotectRange(*map_address, header.text_size, 335 vm_manager.ReprotectRange(*map_address, header.text_size,
@@ -380,13 +384,14 @@ public:
380 return; 384 return;
381 } 385 }
382 386
383 auto* process = Core::CurrentProcess(); 387 auto& vm_manager = Core::CurrentProcess()->VMManager();
384 auto& vm_manager = process->VMManager();
385 const auto& nro_size = iter->second.size; 388 const auto& nro_size = iter->second.size;
386 389
387 ASSERT(process->MirrorMemory(heap_addr, mapped_addr, nro_size, 390 ASSERT(vm_manager
388 Kernel::MemoryState::ModuleCodeStatic) == RESULT_SUCCESS); 391 .MirrorMemory(heap_addr, mapped_addr, nro_size,
389 ASSERT(process->UnmapMemory(mapped_addr, 0, nro_size) == RESULT_SUCCESS); 392 Kernel::MemoryState::ModuleCodeStatic)
393 .IsSuccess());
394 ASSERT(vm_manager.UnmapRange(mapped_addr, nro_size).IsSuccess());
390 395
391 Core::System::GetInstance().InvalidateCpuInstructionCaches(); 396 Core::System::GetInstance().InvalidateCpuInstructionCaches();
392 397