diff options
| author | 2021-12-17 23:08:51 -0800 | |
|---|---|---|
| committer | 2021-12-17 23:08:51 -0800 | |
| commit | 7feac8ba466c186f5510f709369d11b0f7729fb6 (patch) | |
| tree | d1ee09a2e1006e842ad703bb6728f852452ca524 /src | |
| parent | Merge pull request #7399 from ameerj/art-refactor (diff) | |
| download | yuzu-7feac8ba466c186f5510f709369d11b0f7729fb6.tar.gz yuzu-7feac8ba466c186f5510f709369d11b0f7729fb6.tar.xz yuzu-7feac8ba466c186f5510f709369d11b0f7729fb6.zip | |
core: loader: kip: Minimal changes to fix KIP loading.
- Allows us to boot KIP (kernal apps), useful for testing the kernel.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/loader/kip.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/core/loader/kip.cpp b/src/core/loader/kip.cpp index 3ae9e6e0e..99ed34b00 100644 --- a/src/core/loader/kip.cpp +++ b/src/core/loader/kip.cpp | |||
| @@ -71,7 +71,6 @@ AppLoader::LoadResult AppLoader_KIP::Load(Kernel::KProcess& process, | |||
| 71 | kip->GetTitleID(), 0xFFFFFFFFFFFFFFFF, 0x1FE00000, | 71 | kip->GetTitleID(), 0xFFFFFFFFFFFFFFFF, 0x1FE00000, |
| 72 | kip->GetKernelCapabilities()); | 72 | kip->GetKernelCapabilities()); |
| 73 | 73 | ||
| 74 | const VAddr base_address = process.PageTable().GetCodeRegionStart(); | ||
| 75 | Kernel::CodeSet codeset; | 74 | Kernel::CodeSet codeset; |
| 76 | Kernel::PhysicalMemory program_image; | 75 | Kernel::PhysicalMemory program_image; |
| 77 | 76 | ||
| @@ -91,7 +90,14 @@ AppLoader::LoadResult AppLoader_KIP::Load(Kernel::KProcess& process, | |||
| 91 | program_image.resize(PageAlignSize(kip->GetBSSOffset()) + kip->GetBSSSize()); | 90 | program_image.resize(PageAlignSize(kip->GetBSSOffset()) + kip->GetBSSSize()); |
| 92 | codeset.DataSegment().size += kip->GetBSSSize(); | 91 | codeset.DataSegment().size += kip->GetBSSSize(); |
| 93 | 92 | ||
| 93 | // Setup the process code layout | ||
| 94 | if (process.LoadFromMetadata(FileSys::ProgramMetadata::GetDefault(), program_image.size()) | ||
| 95 | .IsError()) { | ||
| 96 | return {ResultStatus::ErrorNotInitialized, {}}; | ||
| 97 | } | ||
| 98 | |||
| 94 | codeset.memory = std::move(program_image); | 99 | codeset.memory = std::move(program_image); |
| 100 | const VAddr base_address = process.PageTable().GetCodeRegionStart(); | ||
| 95 | process.LoadModule(std::move(codeset), base_address); | 101 | process.LoadModule(std::move(codeset), base_address); |
| 96 | 102 | ||
| 97 | LOG_DEBUG(Loader, "loaded module {} @ 0x{:X}", kip->GetName(), base_address); | 103 | LOG_DEBUG(Loader, "loaded module {} @ 0x{:X}", kip->GetName(), base_address); |