|
|
|
@ -136,7 +136,7 @@ struct System::Impl { |
|
|
|
if (virtual_filesystem == nullptr) |
|
|
|
virtual_filesystem = std::make_shared<FileSys::RealVfsFilesystem>(); |
|
|
|
|
|
|
|
current_process = Kernel::Process::Create(kernel, "main"); |
|
|
|
kernel.MakeCurrentProcess(Kernel::Process::Create(kernel, "main")); |
|
|
|
|
|
|
|
cpu_barrier = std::make_shared<CpuBarrier>(); |
|
|
|
cpu_exclusive_monitor = Cpu::MakeExclusiveMonitor(cpu_cores.size()); |
|
|
|
@ -202,7 +202,7 @@ struct System::Impl { |
|
|
|
return init_result; |
|
|
|
} |
|
|
|
|
|
|
|
const Loader::ResultStatus load_result{app_loader->Load(current_process)}; |
|
|
|
const Loader::ResultStatus load_result{app_loader->Load(kernel.CurrentProcess())}; |
|
|
|
if (load_result != Loader::ResultStatus::Success) { |
|
|
|
LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", static_cast<int>(load_result)); |
|
|
|
Shutdown(); |
|
|
|
@ -281,7 +281,6 @@ struct System::Impl { |
|
|
|
std::unique_ptr<VideoCore::RendererBase> renderer; |
|
|
|
std::unique_ptr<Tegra::GPU> gpu_core; |
|
|
|
std::shared_ptr<Tegra::DebugContext> debug_context; |
|
|
|
Kernel::SharedPtr<Kernel::Process> current_process; |
|
|
|
std::shared_ptr<ExclusiveMonitor> cpu_exclusive_monitor; |
|
|
|
std::shared_ptr<CpuBarrier> cpu_barrier; |
|
|
|
std::array<std::shared_ptr<Cpu>, NUM_CPU_CORES> cpu_cores; |
|
|
|
@ -363,7 +362,11 @@ const std::shared_ptr<Kernel::Scheduler>& System::Scheduler(size_t core_index) { |
|
|
|
} |
|
|
|
|
|
|
|
Kernel::SharedPtr<Kernel::Process>& System::CurrentProcess() { |
|
|
|
return impl->current_process; |
|
|
|
return impl->kernel.CurrentProcess(); |
|
|
|
} |
|
|
|
|
|
|
|
const Kernel::SharedPtr<Kernel::Process>& System::CurrentProcess() const { |
|
|
|
return impl->kernel.CurrentProcess(); |
|
|
|
} |
|
|
|
|
|
|
|
ARM_Interface& System::ArmInterface(size_t core_index) { |
|
|
|
|