summaryrefslogtreecommitdiff
path: root/src/core/loader
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/loader')
-rw-r--r--src/core/loader/deconstructed_rom_directory.cpp4
-rw-r--r--src/core/loader/elf.cpp7
-rw-r--r--src/core/loader/nro.cpp6
-rw-r--r--src/core/loader/nso.cpp6
4 files changed, 16 insertions, 7 deletions
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp
index 4c79d7902..a53fa6e00 100644
--- a/src/core/loader/deconstructed_rom_directory.cpp
+++ b/src/core/loader/deconstructed_rom_directory.cpp
@@ -6,6 +6,7 @@
6#include "common/common_funcs.h" 6#include "common/common_funcs.h"
7#include "common/file_util.h" 7#include "common/file_util.h"
8#include "common/logging/log.h" 8#include "common/logging/log.h"
9#include "core/core.h"
9#include "core/file_sys/content_archive.h" 10#include "core/file_sys/content_archive.h"
10#include "core/file_sys/control_metadata.h" 11#include "core/file_sys/control_metadata.h"
11#include "core/file_sys/romfs_factory.h" 12#include "core/file_sys/romfs_factory.h"
@@ -117,10 +118,11 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load(
117 } 118 }
118 } 119 }
119 120
121 auto& kernel = Core::System::GetInstance().Kernel();
120 process->program_id = metadata.GetTitleID(); 122 process->program_id = metadata.GetTitleID();
121 process->svc_access_mask.set(); 123 process->svc_access_mask.set();
122 process->resource_limit = 124 process->resource_limit =
123 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); 125 kernel.ResourceLimitForCategory(Kernel::ResourceLimitCategory::APPLICATION);
124 process->Run(Memory::PROCESS_IMAGE_VADDR, metadata.GetMainThreadPriority(), 126 process->Run(Memory::PROCESS_IMAGE_VADDR, metadata.GetMainThreadPriority(),
125 metadata.GetMainThreadStackSize()); 127 metadata.GetMainThreadStackSize());
126 128
diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp
index 6420a7f11..3702a8478 100644
--- a/src/core/loader/elf.cpp
+++ b/src/core/loader/elf.cpp
@@ -9,6 +9,7 @@
9#include "common/common_types.h" 9#include "common/common_types.h"
10#include "common/file_util.h" 10#include "common/file_util.h"
11#include "common/logging/log.h" 11#include "common/logging/log.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/elf.h" 15#include "core/loader/elf.h"
@@ -300,7 +301,8 @@ SharedPtr<CodeSet> ElfReader::LoadInto(u32 vaddr) {
300 std::vector<u8> program_image(total_image_size); 301 std::vector<u8> program_image(total_image_size);
301 size_t current_image_position = 0; 302 size_t current_image_position = 0;
302 303
303 SharedPtr<CodeSet> codeset = CodeSet::Create(""); 304 auto& kernel = Core::System::GetInstance().Kernel();
305 SharedPtr<CodeSet> codeset = CodeSet::Create(kernel, "");
304 306
305 for (unsigned int i = 0; i < header->e_phnum; ++i) { 307 for (unsigned int i = 0; i < header->e_phnum; ++i) {
306 Elf32_Phdr* p = &segments[i]; 308 Elf32_Phdr* p = &segments[i];
@@ -400,8 +402,9 @@ ResultStatus AppLoader_ELF::Load(Kernel::SharedPtr<Kernel::Process>& process) {
400 process->svc_access_mask.set(); 402 process->svc_access_mask.set();
401 403
402 // Attach the default resource limit (APPLICATION) to the process 404 // Attach the default resource limit (APPLICATION) to the process
405 auto& kernel = Core::System::GetInstance().Kernel();
403 process->resource_limit = 406 process->resource_limit =
404 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); 407 kernel.ResourceLimitForCategory(Kernel::ResourceLimitCategory::APPLICATION);
405 408
406 process->Run(codeset->entrypoint, 48, Memory::DEFAULT_STACK_SIZE); 409 process->Run(codeset->entrypoint, 48, Memory::DEFAULT_STACK_SIZE);
407 410
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp
index 2179cf2ea..00205d1d2 100644
--- a/src/core/loader/nro.cpp
+++ b/src/core/loader/nro.cpp
@@ -136,7 +136,8 @@ bool AppLoader_NRO::LoadNro(FileSys::VirtualFile file, VAddr load_base) {
136 } 136 }
137 137
138 // Build program image 138 // Build program image
139 Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(""); 139 auto& kernel = Core::System::GetInstance().Kernel();
140 Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(kernel, "");
140 std::vector<u8> program_image = file->ReadBytes(PageAlignSize(nro_header.file_size)); 141 std::vector<u8> program_image = file->ReadBytes(PageAlignSize(nro_header.file_size));
141 if (program_image.size() != PageAlignSize(nro_header.file_size)) { 142 if (program_image.size() != PageAlignSize(nro_header.file_size)) {
142 return {}; 143 return {};
@@ -185,9 +186,10 @@ ResultStatus AppLoader_NRO::Load(Kernel::SharedPtr<Kernel::Process>& process) {
185 return ResultStatus::ErrorLoadingNRO; 186 return ResultStatus::ErrorLoadingNRO;
186 } 187 }
187 188
189 auto& kernel = Core::System::GetInstance().Kernel();
188 process->svc_access_mask.set(); 190 process->svc_access_mask.set();
189 process->resource_limit = 191 process->resource_limit =
190 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); 192 kernel.ResourceLimitForCategory(Kernel::ResourceLimitCategory::APPLICATION);
191 process->Run(base_addr, THREADPRIO_DEFAULT, Memory::DEFAULT_STACK_SIZE); 193 process->Run(base_addr, THREADPRIO_DEFAULT, Memory::DEFAULT_STACK_SIZE);
192 194
193 is_loaded = true; 195 is_loaded = true;
diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp
index a94558ac5..0c992d662 100644
--- a/src/core/loader/nso.cpp
+++ b/src/core/loader/nso.cpp
@@ -100,7 +100,8 @@ VAddr AppLoader_NSO::LoadModule(FileSys::VirtualFile file, VAddr load_base) {
100 return {}; 100 return {};
101 101
102 // Build program image 102 // Build program image
103 Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(""); 103 auto& kernel = Core::System::GetInstance().Kernel();
104 Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(kernel, "");
104 std::vector<u8> program_image; 105 std::vector<u8> program_image;
105 for (std::size_t i = 0; i < nso_header.segments.size(); ++i) { 106 for (std::size_t i = 0; i < nso_header.segments.size(); ++i) {
106 const std::vector<u8> compressed_data = 107 const std::vector<u8> compressed_data =
@@ -151,9 +152,10 @@ ResultStatus AppLoader_NSO::Load(Kernel::SharedPtr<Kernel::Process>& process) {
151 LoadModule(file, Memory::PROCESS_IMAGE_VADDR); 152 LoadModule(file, Memory::PROCESS_IMAGE_VADDR);
152 LOG_DEBUG(Loader, "loaded module {} @ 0x{:X}", file->GetName(), Memory::PROCESS_IMAGE_VADDR); 153 LOG_DEBUG(Loader, "loaded module {} @ 0x{:X}", file->GetName(), Memory::PROCESS_IMAGE_VADDR);
153 154
155 auto& kernel = Core::System::GetInstance().Kernel();
154 process->svc_access_mask.set(); 156 process->svc_access_mask.set();
155 process->resource_limit = 157 process->resource_limit =
156 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); 158 kernel.ResourceLimitForCategory(Kernel::ResourceLimitCategory::APPLICATION);
157 process->Run(Memory::PROCESS_IMAGE_VADDR, THREADPRIO_DEFAULT, Memory::DEFAULT_STACK_SIZE); 159 process->Run(Memory::PROCESS_IMAGE_VADDR, THREADPRIO_DEFAULT, Memory::DEFAULT_STACK_SIZE);
158 160
159 is_loaded = true; 161 is_loaded = true;