From 7d6653268f68dea8bc39288e3a27bc499b7b8154 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 13 Mar 2018 17:49:59 -0400 Subject: core: Move process creation out of global state. --- src/core/loader/deconstructed_rom_directory.cpp | 3 +-- src/core/loader/elf.cpp | 1 - src/core/loader/nro.cpp | 5 ++--- src/core/loader/nso.cpp | 5 ++--- 4 files changed, 5 insertions(+), 9 deletions(-) (limited to 'src/core/loader') 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( } metadata.Print(); - process = Kernel::Process::Create("main", metadata.GetTitleID()); - // Load NSO modules VAddr next_load_addr{Memory::PROCESS_IMAGE_VADDR}; for (const auto& module : {"rtld", "main", "subsdk0", "subsdk1", "subsdk2", "subsdk3", @@ -135,6 +133,7 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load( } } + process->program_id = metadata.GetTitleID(); process->svc_access_mask.set(); process->address_mappings = default_address_mappings; 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& process) { SharedPtr codeset = elf_reader.LoadInto(Memory::PROCESS_IMAGE_VADDR); codeset->name = filename; - process = Kernel::Process::Create("main", 0); process->LoadModule(codeset, codeset->entrypoint); process->svc_access_mask.set(); 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 @@ #include "common/file_util.h" #include "common/logging/log.h" #include "common/swap.h" +#include "core/core.h" #include "core/hle/kernel/process.h" #include "core/hle/kernel/resource_limit.h" #include "core/loader/nro.h" @@ -112,7 +113,7 @@ bool AppLoader_NRO::LoadNro(const std::string& path, VAddr load_base) { // Load codeset for current process codeset->name = path; codeset->memory = std::make_shared>(std::move(program_image)); - Kernel::g_current_process->LoadModule(codeset, load_base); + Core::CurrentProcess()->LoadModule(codeset, load_base); return true; } @@ -125,8 +126,6 @@ ResultStatus AppLoader_NRO::Load(Kernel::SharedPtr& process) { return ResultStatus::Error; } - process = Kernel::Process::Create("main", 0); - // Load NRO static constexpr VAddr base_addr{Memory::PROCESS_IMAGE_VADDR}; 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 @@ #include "common/file_util.h" #include "common/logging/log.h" #include "common/swap.h" +#include "core/core.h" #include "core/hle/kernel/process.h" #include "core/hle/kernel/resource_limit.h" #include "core/loader/nso.h" @@ -142,7 +143,7 @@ VAddr AppLoader_NSO::LoadModule(const std::string& path, VAddr load_base) { // Load codeset for current process codeset->name = path; codeset->memory = std::make_shared>(std::move(program_image)); - Kernel::g_current_process->LoadModule(codeset, load_base); + Core::CurrentProcess()->LoadModule(codeset, load_base); return load_base + image_size; } @@ -155,8 +156,6 @@ ResultStatus AppLoader_NSO::Load(Kernel::SharedPtr& process) { return ResultStatus::Error; } - process = Kernel::Process::Create("main", 0); - // Load module LoadModule(filepath, Memory::PROCESS_IMAGE_VADDR); LOG_DEBUG(Loader, "loaded module %s @ 0x%" PRIx64, filepath.c_str(), -- cgit v1.2.3