kern: pass kernel base from KernelLdr to Kernel

This commit is contained in:
Michael Scire 2024-03-28 00:24:45 -07:00 committed by SciresM
parent cf5895e04f
commit 7562f807fd
5 changed files with 8 additions and 6 deletions

View file

@ -32,6 +32,7 @@ namespace ams::kern {
struct InitialProcessBinaryLayout {
uintptr_t address;
uintptr_t _08;
uintptr_t kern_address;
};
struct InitialProcessBinaryLayoutWithSize {

View file

@ -53,7 +53,7 @@ namespace ams::kern {
static size_t GetRealMemorySize();
static size_t GetIntendedMemorySize();
static KPhysicalAddress GetKernelPhysicalBaseAddress(KPhysicalAddress base_address);
static void GetInitialProcessBinaryLayout(InitialProcessBinaryLayout *out);
static void GetInitialProcessBinaryLayout(InitialProcessBinaryLayout *out, KPhysicalAddress kern_base_address);
static bool ShouldIncreaseThreadResourceLimit();
static void TurnOnCpu(u64 core_id, const ams::kern::init::KInitArguments *args);
static size_t GetApplicationPoolSize();

View file

@ -46,10 +46,11 @@ namespace ams::kern {
}
}
void KSystemControlBase::Init::GetInitialProcessBinaryLayout(InitialProcessBinaryLayout *out) {
void KSystemControlBase::Init::GetInitialProcessBinaryLayout(InitialProcessBinaryLayout *out, KPhysicalAddress kern_base_address) {
*out = {
.address = GetInteger(KSystemControl::Init::GetKernelPhysicalBaseAddress(ams::kern::MainMemoryAddress)) + KSystemControl::Init::GetIntendedMemorySize() - InitialProcessBinarySizeMax,
._08 = 0,
.address = GetInteger(KSystemControl::Init::GetKernelPhysicalBaseAddress(ams::kern::MainMemoryAddress)) + KSystemControl::Init::GetIntendedMemorySize() - InitialProcessBinarySizeMax,
._08 = 0,
.kern_address = GetInteger(kern_base_address),
};
}