kern/loader: make aware of new address space and shadow stack region

This commit is contained in:
Alula
2026-09-13 11:41:53 +02:00
parent e6a3d71692
commit 0f15010ba5
25 changed files with 238 additions and 99 deletions

View File

@@ -270,6 +270,7 @@ namespace ams::ldr {
case cfg::impl::OverrideStatusFlag_AddressSpace64BitDeprecated: meta->npdm->flags |= (Npdm::AddressSpaceType_64BitDeprecated) << Npdm::MetaFlag_AddressSpaceTypeShift; break;
case cfg::impl::OverrideStatusFlag_AddressSpace32BitWithoutAlias: meta->npdm->flags |= (Npdm::AddressSpaceType_32BitWithoutAlias) << Npdm::MetaFlag_AddressSpaceTypeShift; break;
case cfg::impl::OverrideStatusFlag_AddressSpace64Bit: meta->npdm->flags |= (Npdm::AddressSpaceType_64Bit) << Npdm::MetaFlag_AddressSpaceTypeShift; break;
case cfg::impl::OverrideStatusFlag_AddressSpace64Bit64KPage: meta->npdm->flags |= (Npdm::AddressSpaceType_64Bit64KPage) << Npdm::MetaFlag_AddressSpaceTypeShift; break;
AMS_UNREACHABLE_DEFAULT_CASE();
}
}

View File

@@ -423,6 +423,9 @@ namespace ams::ldr {
case Npdm::AddressSpaceType_64Bit:
flags |= svc::CreateProcessFlag_AddressSpace64Bit;
break;
case Npdm::AddressSpaceType_64Bit64KPage:
flags |= svc::CreateProcessFlag_AddressSpace64Bit64KPage;
break;
default:
R_THROW(ldr::ResultInvalidMeta());
}
@@ -597,6 +600,10 @@ namespace ams::ldr {
aslr_start = svc::AddressMap39Start;
aslr_size = svc::AddressMap39Size;
break;
case svc::CreateProcessFlag_AddressSpace64Bit64KPage:
aslr_start = svc::AddressMap42Start;
aslr_size = svc::AddressMap42Size;
break;
AMS_UNREACHABLE_DEFAULT_CASE();
}
} else {