summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Morph2021-04-23 09:37:35 -0400
committerGravatar Morph2021-04-23 12:47:31 -0400
commit1c65b3ee5342006b85507a5c35da7078f90822ed (patch)
tree8736bdc8c7ffec95a86706212ff6d994fea983c8
parentMerge pull request #6232 from lioncash/alias2 (diff)
downloadyuzu-1c65b3ee5342006b85507a5c35da7078f90822ed.tar.gz
yuzu-1c65b3ee5342006b85507a5c35da7078f90822ed.tar.xz
yuzu-1c65b3ee5342006b85507a5c35da7078f90822ed.zip
program_metadata: Set a default resource size when a NPDM is not present
Sets a default size of 0x1FE00000 bytes (510 MiB) for the system_resource_size when a NPDM is not present.
-rw-r--r--src/core/file_sys/program_metadata.cpp6
-rw-r--r--src/core/file_sys/program_metadata.h3
-rw-r--r--src/core/loader/kip.cpp3
3 files changed, 8 insertions, 4 deletions
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp
index 9cf49bf44..83b83a044 100644
--- a/src/core/file_sys/program_metadata.cpp
+++ b/src/core/file_sys/program_metadata.cpp
@@ -58,7 +58,8 @@ Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) {
58 result.LoadManual( 58 result.LoadManual(
59 true /*is_64_bit*/, FileSys::ProgramAddressSpaceType::Is39Bit /*address_space*/, 59 true /*is_64_bit*/, FileSys::ProgramAddressSpaceType::Is39Bit /*address_space*/,
60 0x2c /*main_thread_prio*/, 0 /*main_thread_core*/, 0x00100000 /*main_thread_stack_size*/, 60 0x2c /*main_thread_prio*/, 0 /*main_thread_core*/, 0x00100000 /*main_thread_stack_size*/,
61 {}, 0xFFFFFFFFFFFFFFFF /*filesystem_permissions*/, {} /*capabilities*/); 61 0 /*title_id*/, 0xFFFFFFFFFFFFFFFF /*filesystem_permissions*/,
62 0x1FE00000 /*system_resource_size*/, {} /*capabilities*/);
62 63
63 return result; 64 return result;
64} 65}
@@ -66,7 +67,7 @@ Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) {
66void ProgramMetadata::LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, 67void ProgramMetadata::LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space,
67 s32 main_thread_prio, u32 main_thread_core, 68 s32 main_thread_prio, u32 main_thread_core,
68 u32 main_thread_stack_size, u64 title_id, 69 u32 main_thread_stack_size, u64 title_id,
69 u64 filesystem_permissions, 70 u64 filesystem_permissions, u32 system_resource_size,
70 KernelCapabilityDescriptors capabilities) { 71 KernelCapabilityDescriptors capabilities) {
71 npdm_header.has_64_bit_instructions.Assign(is_64_bit); 72 npdm_header.has_64_bit_instructions.Assign(is_64_bit);
72 npdm_header.address_space_type.Assign(address_space); 73 npdm_header.address_space_type.Assign(address_space);
@@ -75,6 +76,7 @@ void ProgramMetadata::LoadManual(bool is_64_bit, ProgramAddressSpaceType address
75 npdm_header.main_stack_size = main_thread_stack_size; 76 npdm_header.main_stack_size = main_thread_stack_size;
76 aci_header.title_id = title_id; 77 aci_header.title_id = title_id;
77 aci_file_access.permissions = filesystem_permissions; 78 aci_file_access.permissions = filesystem_permissions;
79 npdm_header.system_resource_size = system_resource_size;
78 aci_kernel_capabilities = std ::move(capabilities); 80 aci_kernel_capabilities = std ::move(capabilities);
79} 81}
80 82
diff --git a/src/core/file_sys/program_metadata.h b/src/core/file_sys/program_metadata.h
index 455532567..c505f5a89 100644
--- a/src/core/file_sys/program_metadata.h
+++ b/src/core/file_sys/program_metadata.h
@@ -53,7 +53,8 @@ public:
53 /// Load from parameters instead of NPDM file, used for KIP 53 /// Load from parameters instead of NPDM file, used for KIP
54 void LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, s32 main_thread_prio, 54 void LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, s32 main_thread_prio,
55 u32 main_thread_core, u32 main_thread_stack_size, u64 title_id, 55 u32 main_thread_core, u32 main_thread_stack_size, u64 title_id,
56 u64 filesystem_permissions, KernelCapabilityDescriptors capabilities); 56 u64 filesystem_permissions, u32 system_resource_size,
57 KernelCapabilityDescriptors capabilities);
57 58
58 bool Is64BitProgram() const; 59 bool Is64BitProgram() const;
59 ProgramAddressSpaceType GetAddressSpaceType() const; 60 ProgramAddressSpaceType GetAddressSpaceType() const;
diff --git a/src/core/loader/kip.cpp b/src/core/loader/kip.cpp
index 3f4ba233d..55e6de794 100644
--- a/src/core/loader/kip.cpp
+++ b/src/core/loader/kip.cpp
@@ -68,7 +68,8 @@ AppLoader::LoadResult AppLoader_KIP::Load(Kernel::Process& process,
68 FileSys::ProgramMetadata metadata; 68 FileSys::ProgramMetadata metadata;
69 metadata.LoadManual(kip->Is64Bit(), address_space, kip->GetMainThreadPriority(), 69 metadata.LoadManual(kip->Is64Bit(), address_space, kip->GetMainThreadPriority(),
70 kip->GetMainThreadCpuCore(), kip->GetMainThreadStackSize(), 70 kip->GetMainThreadCpuCore(), kip->GetMainThreadStackSize(),
71 kip->GetTitleID(), 0xFFFFFFFFFFFFFFFF, kip->GetKernelCapabilities()); 71 kip->GetTitleID(), 0xFFFFFFFFFFFFFFFF, 0x1FE00000,
72 kip->GetKernelCapabilities());
72 73
73 const VAddr base_address = process.PageTable().GetCodeRegionStart(); 74 const VAddr base_address = process.PageTable().GetCodeRegionStart();
74 Kernel::CodeSet codeset; 75 Kernel::CodeSet codeset;