diff options
| author | 2017-07-21 21:17:57 -0500 | |
|---|---|---|
| committer | 2017-09-10 15:13:41 -0500 | |
| commit | 6d2734a074f44a24129db850339677d8d7b436aa (patch) | |
| tree | 418be08a059813466e7ed4495fd6198b16aa4ddc /src/core/loader | |
| parent | Added missing parts in libnetwork (#2838) (diff) | |
| download | yuzu-6d2734a074f44a24129db850339677d8d7b436aa.tar.gz yuzu-6d2734a074f44a24129db850339677d8d7b436aa.tar.xz yuzu-6d2734a074f44a24129db850339677d8d7b436aa.zip | |
Kernel/Memory: Give each Process its own page table.
The loader is in charge of setting the newly created process's page table as the main one during the loading process.
Diffstat (limited to 'src/core/loader')
| -rw-r--r-- | src/core/loader/3dsx.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/elf.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/ncch.cpp | 1 |
3 files changed, 3 insertions, 0 deletions
diff --git a/src/core/loader/3dsx.cpp b/src/core/loader/3dsx.cpp index 74e336487..69cdc0867 100644 --- a/src/core/loader/3dsx.cpp +++ b/src/core/loader/3dsx.cpp | |||
| @@ -270,6 +270,7 @@ ResultStatus AppLoader_THREEDSX::Load() { | |||
| 270 | Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); | 270 | Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); |
| 271 | Kernel::g_current_process->svc_access_mask.set(); | 271 | Kernel::g_current_process->svc_access_mask.set(); |
| 272 | Kernel::g_current_process->address_mappings = default_address_mappings; | 272 | Kernel::g_current_process->address_mappings = default_address_mappings; |
| 273 | Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; | ||
| 273 | 274 | ||
| 274 | // Attach the default resource limit (APPLICATION) to the process | 275 | // Attach the default resource limit (APPLICATION) to the process |
| 275 | Kernel::g_current_process->resource_limit = | 276 | Kernel::g_current_process->resource_limit = |
diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index cfcde9167..2f27606a1 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp | |||
| @@ -397,6 +397,7 @@ ResultStatus AppLoader_ELF::Load() { | |||
| 397 | Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); | 397 | Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); |
| 398 | Kernel::g_current_process->svc_access_mask.set(); | 398 | Kernel::g_current_process->svc_access_mask.set(); |
| 399 | Kernel::g_current_process->address_mappings = default_address_mappings; | 399 | Kernel::g_current_process->address_mappings = default_address_mappings; |
| 400 | Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; | ||
| 400 | 401 | ||
| 401 | // Attach the default resource limit (APPLICATION) to the process | 402 | // Attach the default resource limit (APPLICATION) to the process |
| 402 | Kernel::g_current_process->resource_limit = | 403 | Kernel::g_current_process->resource_limit = |
diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 7aff7f29b..79ea50147 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp | |||
| @@ -172,6 +172,7 @@ ResultStatus AppLoader_NCCH::LoadExec() { | |||
| 172 | codeset->memory = std::make_shared<std::vector<u8>>(std::move(code)); | 172 | codeset->memory = std::make_shared<std::vector<u8>>(std::move(code)); |
| 173 | 173 | ||
| 174 | Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); | 174 | Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); |
| 175 | Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; | ||
| 175 | 176 | ||
| 176 | // Attach a resource limit to the process based on the resource limit category | 177 | // Attach a resource limit to the process based on the resource limit category |
| 177 | Kernel::g_current_process->resource_limit = | 178 | Kernel::g_current_process->resource_limit = |