summaryrefslogtreecommitdiff
path: root/src/core/loader
diff options
context:
space:
mode:
authorGravatar bunnei2018-03-14 19:33:27 -0400
committerGravatar GitHub2018-03-14 19:33:27 -0400
commitcde9386e0fd9677e1a89a8dc81ea9cd65fa22c50 (patch)
tree6330442e1dacc0d850ce09c35dcee7ddd3a2bc9d /src/core/loader
parentMerge pull request #213 from Hexagon12/dynarmic-default (diff)
parentcore: Move process creation out of global state. (diff)
downloadyuzu-cde9386e0fd9677e1a89a8dc81ea9cd65fa22c50.tar.gz
yuzu-cde9386e0fd9677e1a89a8dc81ea9cd65fa22c50.tar.xz
yuzu-cde9386e0fd9677e1a89a8dc81ea9cd65fa22c50.zip
Merge pull request #236 from bunnei/refactor-process-creation
core: Move process creation out of global state.
Diffstat (limited to 'src/core/loader')
-rw-r--r--src/core/loader/deconstructed_rom_directory.cpp3
-rw-r--r--src/core/loader/elf.cpp1
-rw-r--r--src/core/loader/nro.cpp5
-rw-r--r--src/core/loader/nso.cpp5
4 files changed, 5 insertions, 9 deletions
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp
index 459d127c2..aa09ed323 100644
--- a/src/core/loader/deconstructed_rom_directory.cpp
+++ b/src/core/loader/deconstructed_rom_directory.cpp
@@ -119,8 +119,6 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load(
119 } 119 }
120 metadata.Print(); 120 metadata.Print();
121 121
122 process = Kernel::Process::Create("main", metadata.GetTitleID());
123
124 // Load NSO modules 122 // Load NSO modules
125 VAddr next_load_addr{Memory::PROCESS_IMAGE_VADDR}; 123 VAddr next_load_addr{Memory::PROCESS_IMAGE_VADDR};
126 for (const auto& module : {"rtld", "main", "subsdk0", "subsdk1", "subsdk2", "subsdk3", 124 for (const auto& module : {"rtld", "main", "subsdk0", "subsdk1", "subsdk2", "subsdk3",
@@ -135,6 +133,7 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load(
135 } 133 }
136 } 134 }
137 135
136 process->program_id = metadata.GetTitleID();
138 process->svc_access_mask.set(); 137 process->svc_access_mask.set();
139 process->address_mappings = default_address_mappings; 138 process->address_mappings = default_address_mappings;
140 process->resource_limit = 139 process->resource_limit =
diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp
index cdd41f237..164d52258 100644
--- a/src/core/loader/elf.cpp
+++ b/src/core/loader/elf.cpp
@@ -406,7 +406,6 @@ ResultStatus AppLoader_ELF::Load(Kernel::SharedPtr<Kernel::Process>& process) {
406 SharedPtr<CodeSet> codeset = elf_reader.LoadInto(Memory::PROCESS_IMAGE_VADDR); 406 SharedPtr<CodeSet> codeset = elf_reader.LoadInto(Memory::PROCESS_IMAGE_VADDR);
407 codeset->name = filename; 407 codeset->name = filename;
408 408
409 process = Kernel::Process::Create("main", 0);
410 process->LoadModule(codeset, codeset->entrypoint); 409 process->LoadModule(codeset, codeset->entrypoint);
411 process->svc_access_mask.set(); 410 process->svc_access_mask.set();
412 process->address_mappings = default_address_mappings; 411 process->address_mappings = default_address_mappings;
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp
index c557b66dc..0dc06ccea 100644
--- a/src/core/loader/nro.cpp
+++ b/src/core/loader/nro.cpp
@@ -8,6 +8,7 @@
8#include "common/file_util.h" 8#include "common/file_util.h"
9#include "common/logging/log.h" 9#include "common/logging/log.h"
10#include "common/swap.h" 10#include "common/swap.h"
11#include "core/core.h"
11#include "core/hle/kernel/process.h" 12#include "core/hle/kernel/process.h"
12#include "core/hle/kernel/resource_limit.h" 13#include "core/hle/kernel/resource_limit.h"
13#include "core/loader/nro.h" 14#include "core/loader/nro.h"
@@ -112,7 +113,7 @@ bool AppLoader_NRO::LoadNro(const std::string& path, VAddr load_base) {
112 // Load codeset for current process 113 // Load codeset for current process
113 codeset->name = path; 114 codeset->name = path;
114 codeset->memory = std::make_shared<std::vector<u8>>(std::move(program_image)); 115 codeset->memory = std::make_shared<std::vector<u8>>(std::move(program_image));
115 Kernel::g_current_process->LoadModule(codeset, load_base); 116 Core::CurrentProcess()->LoadModule(codeset, load_base);
116 117
117 return true; 118 return true;
118} 119}
@@ -125,8 +126,6 @@ ResultStatus AppLoader_NRO::Load(Kernel::SharedPtr<Kernel::Process>& process) {
125 return ResultStatus::Error; 126 return ResultStatus::Error;
126 } 127 }
127 128
128 process = Kernel::Process::Create("main", 0);
129
130 // Load NRO 129 // Load NRO
131 static constexpr VAddr base_addr{Memory::PROCESS_IMAGE_VADDR}; 130 static constexpr VAddr base_addr{Memory::PROCESS_IMAGE_VADDR};
132 131
diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp
index 00b5d1d49..c0eeb95d3 100644
--- a/src/core/loader/nso.cpp
+++ b/src/core/loader/nso.cpp
@@ -9,6 +9,7 @@
9#include "common/file_util.h" 9#include "common/file_util.h"
10#include "common/logging/log.h" 10#include "common/logging/log.h"
11#include "common/swap.h" 11#include "common/swap.h"
12#include "core/core.h"
12#include "core/hle/kernel/process.h" 13#include "core/hle/kernel/process.h"
13#include "core/hle/kernel/resource_limit.h" 14#include "core/hle/kernel/resource_limit.h"
14#include "core/loader/nso.h" 15#include "core/loader/nso.h"
@@ -142,7 +143,7 @@ VAddr AppLoader_NSO::LoadModule(const std::string& path, VAddr load_base) {
142 // Load codeset for current process 143 // Load codeset for current process
143 codeset->name = path; 144 codeset->name = path;
144 codeset->memory = std::make_shared<std::vector<u8>>(std::move(program_image)); 145 codeset->memory = std::make_shared<std::vector<u8>>(std::move(program_image));
145 Kernel::g_current_process->LoadModule(codeset, load_base); 146 Core::CurrentProcess()->LoadModule(codeset, load_base);
146 147
147 return load_base + image_size; 148 return load_base + image_size;
148} 149}
@@ -155,8 +156,6 @@ ResultStatus AppLoader_NSO::Load(Kernel::SharedPtr<Kernel::Process>& process) {
155 return ResultStatus::Error; 156 return ResultStatus::Error;
156 } 157 }
157 158
158 process = Kernel::Process::Create("main", 0);
159
160 // Load module 159 // Load module
161 LoadModule(filepath, Memory::PROCESS_IMAGE_VADDR); 160 LoadModule(filepath, Memory::PROCESS_IMAGE_VADDR);
162 LOG_DEBUG(Loader, "loaded module %s @ 0x%" PRIx64, filepath.c_str(), 161 LOG_DEBUG(Loader, "loaded module %s @ 0x%" PRIx64, filepath.c_str(),