core: loader: kip: Minimal changes to fix KIP loading.
- Allows us to boot KIP (kernal apps), useful for testing the kernel.
This commit is contained in:
parent
04b4f3b051
commit
7feac8ba46
1 changed files with 7 additions and 1 deletions
|
@ -71,7 +71,6 @@ AppLoader::LoadResult AppLoader_KIP::Load(Kernel::KProcess& process,
|
||||||
kip->GetTitleID(), 0xFFFFFFFFFFFFFFFF, 0x1FE00000,
|
kip->GetTitleID(), 0xFFFFFFFFFFFFFFFF, 0x1FE00000,
|
||||||
kip->GetKernelCapabilities());
|
kip->GetKernelCapabilities());
|
||||||
|
|
||||||
const VAddr base_address = process.PageTable().GetCodeRegionStart();
|
|
||||||
Kernel::CodeSet codeset;
|
Kernel::CodeSet codeset;
|
||||||
Kernel::PhysicalMemory program_image;
|
Kernel::PhysicalMemory program_image;
|
||||||
|
|
||||||
|
@ -91,7 +90,14 @@ AppLoader::LoadResult AppLoader_KIP::Load(Kernel::KProcess& process,
|
||||||
program_image.resize(PageAlignSize(kip->GetBSSOffset()) + kip->GetBSSSize());
|
program_image.resize(PageAlignSize(kip->GetBSSOffset()) + kip->GetBSSSize());
|
||||||
codeset.DataSegment().size += kip->GetBSSSize();
|
codeset.DataSegment().size += kip->GetBSSSize();
|
||||||
|
|
||||||
|
// Setup the process code layout
|
||||||
|
if (process.LoadFromMetadata(FileSys::ProgramMetadata::GetDefault(), program_image.size())
|
||||||
|
.IsError()) {
|
||||||
|
return {ResultStatus::ErrorNotInitialized, {}};
|
||||||
|
}
|
||||||
|
|
||||||
codeset.memory = std::move(program_image);
|
codeset.memory = std::move(program_image);
|
||||||
|
const VAddr base_address = process.PageTable().GetCodeRegionStart();
|
||||||
process.LoadModule(std::move(codeset), base_address);
|
process.LoadModule(std::move(codeset), base_address);
|
||||||
|
|
||||||
LOG_DEBUG(Loader, "loaded module {} @ 0x{:X}", kip->GetName(), base_address);
|
LOG_DEBUG(Loader, "loaded module {} @ 0x{:X}", kip->GetName(), base_address);
|
||||||
|
|
Loading…
Reference in a new issue