Browse Source

add the 0x500000 offset that Ryu uses

pull/2858/head
JPikachu 3 months ago
committed by crueter
parent
commit
3e88d83896
  1. 11
      src/core/hle/kernel/k_process.cpp

11
src/core/hle/kernel/k_process.cpp

@ -28,6 +28,9 @@ namespace Kernel {
namespace {
// TODO: Remove this workaround when proper ASLR is implemented for all address spaces.
constexpr u64 CodeStartOffset = 0x500000UL;
Result TerminateChildren(KernelCore& kernel, KProcess* process,
const KThread* thread_to_not_terminate) {
// Request that all children threads terminate.
@ -1190,19 +1193,19 @@ Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std:
// However, some (buggy) programs/libraries like skyline incorrectly depend on the
// existence of ASLR pages before the entry point, so we will adjust the load address
// to point to about 2GiB into the ASLR region.
code_address = 0x8000'0000;
code_address = 0x8000'0000 + CodeStartOffset;
break;
case FileSys::ProgramAddressSpaceType::Is36Bit:
flag |= Svc::CreateProcessFlag::AddressSpace64BitDeprecated;
code_address = 0x800'0000;
code_address = 0x800'0000 + CodeStartOffset;
break;
case FileSys::ProgramAddressSpaceType::Is32Bit:
flag |= Svc::CreateProcessFlag::AddressSpace32Bit;
code_address = 0x20'0000;
code_address = 0x20'0000 + CodeStartOffset;
break;
case FileSys::ProgramAddressSpaceType::Is32BitNoMap:
flag |= Svc::CreateProcessFlag::AddressSpace32BitWithoutAlias;
code_address = 0x20'0000;
code_address = 0x20'0000 + CodeStartOffset;
break;
}

Loading…
Cancel
Save