diff options
| author | 2018-03-14 19:33:27 -0400 | |
|---|---|---|
| committer | 2018-03-14 19:33:27 -0400 | |
| commit | cde9386e0fd9677e1a89a8dc81ea9cd65fa22c50 (patch) | |
| tree | 6330442e1dacc0d850ce09c35dcee7ddd3a2bc9d /src/core/loader | |
| parent | Merge pull request #213 from Hexagon12/dynarmic-default (diff) | |
| parent | core: Move process creation out of global state. (diff) | |
| download | yuzu-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.cpp | 3 | ||||
| -rw-r--r-- | src/core/loader/elf.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/nro.cpp | 5 | ||||
| -rw-r--r-- | src/core/loader/nso.cpp | 5 |
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(), |