Bump kernel version for 3DSX (#5446)
This commit is contained in:
		| @@ -145,6 +145,22 @@ void Process::ParseKernelCaps(const u32* kernel_caps, std::size_t len) { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void Process::Set3dsxKernelCaps() { | ||||||
|  |     svc_access_mask.set(); | ||||||
|  |  | ||||||
|  |     address_mappings = { | ||||||
|  |         {0x1FF50000, 0x8000, true},    // part of DSP RAM | ||||||
|  |         {0x1FF70000, 0x8000, true},    // part of DSP RAM | ||||||
|  |         {0x1F000000, 0x600000, false}, // entire VRAM | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     // Similar to Rosalina, we set kernel version to a recent one. | ||||||
|  |     // This is 11.2.0, to be consistent with core/hle/kernel/config_mem.cpp | ||||||
|  |     // TODO: refactor kernel version out so it is configurable and consistent | ||||||
|  |     // among all relevant places. | ||||||
|  |     kernel_version = 0x234; | ||||||
|  | } | ||||||
|  |  | ||||||
| void Process::Run(s32 main_thread_priority, u32 stack_size) { | void Process::Run(s32 main_thread_priority, u32 stack_size) { | ||||||
|     memory_region = kernel.GetMemoryRegion(flags.memory_region); |     memory_region = kernel.GetMemoryRegion(flags.memory_region); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -190,6 +190,11 @@ public: | |||||||
|      */ |      */ | ||||||
|     void ParseKernelCaps(const u32* kernel_caps, std::size_t len); |     void ParseKernelCaps(const u32* kernel_caps, std::size_t len); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Set up the default kernel capability for 3DSX. | ||||||
|  |      */ | ||||||
|  |     void Set3dsxKernelCaps(); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Applies address space changes and launches the process main thread. |      * Applies address space changes and launches the process main thread. | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -268,8 +268,7 @@ ResultStatus AppLoader_THREEDSX::Load(std::shared_ptr<Kernel::Process>& process) | |||||||
|     codeset->name = filename; |     codeset->name = filename; | ||||||
|  |  | ||||||
|     process = Core::System::GetInstance().Kernel().CreateProcess(std::move(codeset)); |     process = Core::System::GetInstance().Kernel().CreateProcess(std::move(codeset)); | ||||||
|     process->svc_access_mask.set(); |     process->Set3dsxKernelCaps(); | ||||||
|     process->address_mappings = default_address_mappings; |  | ||||||
|  |  | ||||||
|     // Attach the default resource limit (APPLICATION) to the process |     // Attach the default resource limit (APPLICATION) to the process | ||||||
|     process->resource_limit = Core::System::GetInstance().Kernel().ResourceLimit().GetForCategory( |     process->resource_limit = Core::System::GetInstance().Kernel().ResourceLimit().GetForCategory( | ||||||
|   | |||||||
| @@ -396,8 +396,7 @@ ResultStatus AppLoader_ELF::Load(std::shared_ptr<Kernel::Process>& process) { | |||||||
|     codeset->name = filename; |     codeset->name = filename; | ||||||
|  |  | ||||||
|     process = Core::System::GetInstance().Kernel().CreateProcess(std::move(codeset)); |     process = Core::System::GetInstance().Kernel().CreateProcess(std::move(codeset)); | ||||||
|     process->svc_access_mask.set(); |     process->Set3dsxKernelCaps(); | ||||||
|     process->address_mappings = default_address_mappings; |  | ||||||
|  |  | ||||||
|     // Attach the default resource limit (APPLICATION) to the process |     // Attach the default resource limit (APPLICATION) to the process | ||||||
|     process->resource_limit = Core::System::GetInstance().Kernel().ResourceLimit().GetForCategory( |     process->resource_limit = Core::System::GetInstance().Kernel().ResourceLimit().GetForCategory( | ||||||
|   | |||||||
| @@ -15,12 +15,6 @@ | |||||||
|  |  | ||||||
| namespace Loader { | namespace Loader { | ||||||
|  |  | ||||||
| const std::initializer_list<Kernel::AddressMapping> default_address_mappings = { |  | ||||||
|     {0x1FF50000, 0x8000, true},    // part of DSP RAM |  | ||||||
|     {0x1FF70000, 0x8000, true},    // part of DSP RAM |  | ||||||
|     {0x1F000000, 0x600000, false}, // entire VRAM |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| FileType IdentifyFile(FileUtil::IOFile& file) { | FileType IdentifyFile(FileUtil::IOFile& file) { | ||||||
|     FileType type; |     FileType type; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ | |||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
| #include <algorithm> | #include <algorithm> | ||||||
| #include <initializer_list> |  | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <optional> | #include <optional> | ||||||
| #include <string> | #include <string> | ||||||
| @@ -237,12 +236,6 @@ protected: | |||||||
|     bool is_loaded = false; |     bool is_loaded = false; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Common address mappings found in most games, used for binary formats that don't have this |  | ||||||
|  * information. |  | ||||||
|  */ |  | ||||||
| extern const std::initializer_list<Kernel::AddressMapping> default_address_mappings; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Identifies a bootable file and return a suitable loader |  * Identifies a bootable file and return a suitable loader | ||||||
|  * @param filename String filename of bootable file |  * @param filename String filename of bootable file | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user