summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Zach Hilman2019-06-05 00:20:26 -0400
committerGravatar Zach Hilman2019-06-05 00:20:26 -0400
commitb550a01f743c6324ce3174093d1314eaf2c8ef54 (patch)
tree46d9d027a0e8cfc1bf5851f753df3d287db23807 /src
parentpartition_data_manager: Remove KIP processing and use FileSys (diff)
downloadyuzu-b550a01f743c6324ce3174093d1314eaf2c8ef54.tar.gz
yuzu-b550a01f743c6324ce3174093d1314eaf2c8ef54.tar.xz
yuzu-b550a01f743c6324ce3174093d1314eaf2c8ef54.zip
program_metadata: Add function to load meta from raw parameters
Needed for KIP loading as KIPs do not have an NPDM but do have the essential parts of the data within.
Diffstat (limited to 'src')
-rw-r--r--src/core/file_sys/program_metadata.cpp15
-rw-r--r--src/core/file_sys/program_metadata.h5
2 files changed, 20 insertions, 0 deletions
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp
index d863253f8..eb76174c5 100644
--- a/src/core/file_sys/program_metadata.cpp
+++ b/src/core/file_sys/program_metadata.cpp
@@ -51,6 +51,21 @@ Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) {
51 return Loader::ResultStatus::Success; 51 return Loader::ResultStatus::Success;
52} 52}
53 53
54void ProgramMetadata::LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space,
55 u8 main_thread_prio, u8 main_thread_core,
56 u32 main_thread_stack_size, u64 title_id,
57 u64 filesystem_permissions,
58 KernelCapabilityDescriptors capabilities) {
59 npdm_header.has_64_bit_instructions.Assign(is_64_bit);
60 npdm_header.address_space_type.Assign(address_space);
61 npdm_header.main_thread_priority = main_thread_prio;
62 npdm_header.main_thread_cpu = main_thread_core;
63 npdm_header.main_stack_size = main_thread_stack_size;
64 aci_header.title_id = title_id;
65 aci_file_access.permissions = filesystem_permissions;
66 aci_kernel_capabilities = std ::move(capabilities);
67}
68
54bool ProgramMetadata::Is64BitProgram() const { 69bool ProgramMetadata::Is64BitProgram() const {
55 return npdm_header.has_64_bit_instructions; 70 return npdm_header.has_64_bit_instructions;
56} 71}
diff --git a/src/core/file_sys/program_metadata.h b/src/core/file_sys/program_metadata.h
index 7de5b9cf9..43bf2820a 100644
--- a/src/core/file_sys/program_metadata.h
+++ b/src/core/file_sys/program_metadata.h
@@ -46,6 +46,11 @@ public:
46 46
47 Loader::ResultStatus Load(VirtualFile file); 47 Loader::ResultStatus Load(VirtualFile file);
48 48
49 // Load from parameters instead of NPDM file, used for KIP
50 void LoadManual(bool is_64_bit, ProgramAddressSpaceType address_space, u8 main_thread_prio,
51 u8 main_thread_core, u32 main_thread_stack_size, u64 title_id,
52 u64 filesystem_permissions, KernelCapabilityDescriptors capabilities);
53
49 bool Is64BitProgram() const; 54 bool Is64BitProgram() const;
50 ProgramAddressSpaceType GetAddressSpaceType() const; 55 ProgramAddressSpaceType GetAddressSpaceType() const;
51 u8 GetMainThreadPriority() const; 56 u8 GetMainThreadPriority() const;