diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.cpp | 6 | ||||
| -rw-r--r-- | src/core/loader/nro.cpp | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index e7fc8f438..31c00f0a3 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp | |||
| @@ -129,8 +129,10 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect | |||
| 129 | } | 129 | } |
| 130 | metadata.Print(); | 130 | metadata.Print(); |
| 131 | 131 | ||
| 132 | // Enable NCE only for 64-bit programs. | 132 | // Enable NCE only for programs with 39-bit address space. |
| 133 | Settings::SetNceEnabled(metadata.Is64BitProgram()); | 133 | const bool is_39bit = |
| 134 | metadata.GetAddressSpaceType() == FileSys::ProgramAddressSpaceType::Is39Bit; | ||
| 135 | Settings::SetNceEnabled(is_39bit); | ||
| 134 | 136 | ||
| 135 | const std::array static_modules = {"rtld", "main", "subsdk0", "subsdk1", "subsdk2", | 137 | const std::array static_modules = {"rtld", "main", "subsdk0", "subsdk1", "subsdk2", |
| 136 | "subsdk3", "subsdk4", "subsdk5", "subsdk6", "subsdk7", | 138 | "subsdk3", "subsdk4", "subsdk5", "subsdk6", "subsdk7", |
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index 49cf90317..76ff38041 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp | |||
| @@ -199,6 +199,7 @@ static bool LoadNroImpl(Core::System& system, Kernel::KProcess& process, | |||
| 199 | 199 | ||
| 200 | codeset.DataSegment().size += bss_size; | 200 | codeset.DataSegment().size += bss_size; |
| 201 | program_image.resize(static_cast<u32>(program_image.size()) + bss_size); | 201 | program_image.resize(static_cast<u32>(program_image.size()) + bss_size); |
| 202 | size_t image_size = program_image.size(); | ||
| 202 | 203 | ||
| 203 | #ifdef ARCHITECTURE_arm64 | 204 | #ifdef ARCHITECTURE_arm64 |
| 204 | const auto& code = codeset.CodeSegment(); | 205 | const auto& code = codeset.CodeSegment(); |
| @@ -208,7 +209,6 @@ static bool LoadNroImpl(Core::System& system, Kernel::KProcess& process, | |||
| 208 | 209 | ||
| 209 | // Create NCE patcher | 210 | // Create NCE patcher |
| 210 | Core::NCE::Patcher patch{}; | 211 | Core::NCE::Patcher patch{}; |
| 211 | size_t image_size = program_image.size(); | ||
| 212 | 212 | ||
| 213 | if (Settings::IsNceEnabled()) { | 213 | if (Settings::IsNceEnabled()) { |
| 214 | // Patch SVCs and MRS calls in the guest code | 214 | // Patch SVCs and MRS calls in the guest code |