diff options
| author | 2021-04-23 09:37:35 -0400 | |
|---|---|---|
| committer | 2021-04-23 12:47:31 -0400 | |
| commit | 1c65b3ee5342006b85507a5c35da7078f90822ed (patch) | |
| tree | 8736bdc8c7ffec95a86706212ff6d994fea983c8 | |
| parent | Merge pull request #6232 from lioncash/alias2 (diff) | |
| download | yuzu-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.cpp | 6 | ||||
| -rw-r--r-- | src/core/file_sys/program_metadata.h | 3 | ||||
| -rw-r--r-- | src/core/loader/kip.cpp | 3 |
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) { | |||
| 66 | void ProgramMetadata::LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, | 67 | void 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; |