Browse Source

Deglobalize System: LDR

pull/15/merge
David Marcec 6 years ago
parent
commit
482a03f8a5
  1. 11
      src/core/hle/service/ldr/ldr.cpp
  2. 2
      src/core/hle/service/ldr/ldr.h

11
src/core/hle/service/ldr/ldr.cpp

@ -78,7 +78,7 @@ public:
class RelocatableObject final : public ServiceFramework<RelocatableObject> { class RelocatableObject final : public ServiceFramework<RelocatableObject> {
public: public:
explicit RelocatableObject() : ServiceFramework{"ldr:ro"} {
explicit RelocatableObject(Core::System& system) : ServiceFramework{"ldr:ro"}, system(system) {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, &RelocatableObject::LoadNro, "LoadNro"}, {0, &RelocatableObject::LoadNro, "LoadNro"},
@ -364,7 +364,7 @@ public:
vm_manager.ReprotectRange(*map_address + header.rw_offset, header.rw_size, vm_manager.ReprotectRange(*map_address + header.rw_offset, header.rw_size,
Kernel::VMAPermission::ReadWrite); Kernel::VMAPermission::ReadWrite);
Core::System::GetInstance().InvalidateCpuInstructionCaches();
system.InvalidateCpuInstructionCaches();
nro.insert_or_assign(*map_address, nro.insert_or_assign(*map_address,
NROInfo{hash, nro_address, nro_size, bss_address, bss_size}); NROInfo{hash, nro_address, nro_size, bss_address, bss_size});
@ -430,7 +430,7 @@ public:
.IsSuccess()); .IsSuccess());
} }
Core::System::GetInstance().InvalidateCpuInstructionCaches();
system.InvalidateCpuInstructionCaches();
nro.erase(iter); nro.erase(iter);
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
@ -516,13 +516,14 @@ private:
Common::Is4KBAligned(header.text_size) && Common::Is4KBAligned(header.ro_size) && Common::Is4KBAligned(header.text_size) && Common::Is4KBAligned(header.ro_size) &&
Common::Is4KBAligned(header.rw_size); Common::Is4KBAligned(header.rw_size);
} }
Core::System& system;
}; };
void InstallInterfaces(SM::ServiceManager& sm) {
void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) {
std::make_shared<DebugMonitor>()->InstallAsService(sm); std::make_shared<DebugMonitor>()->InstallAsService(sm);
std::make_shared<ProcessManager>()->InstallAsService(sm); std::make_shared<ProcessManager>()->InstallAsService(sm);
std::make_shared<Shell>()->InstallAsService(sm); std::make_shared<Shell>()->InstallAsService(sm);
std::make_shared<RelocatableObject>()->InstallAsService(sm);
std::make_shared<RelocatableObject>(system)->InstallAsService(sm);
} }
} // namespace Service::LDR } // namespace Service::LDR

2
src/core/hle/service/ldr/ldr.h

@ -11,6 +11,6 @@ class ServiceManager;
namespace Service::LDR { namespace Service::LDR {
/// Registers all LDR services with the specified service manager. /// Registers all LDR services with the specified service manager.
void InstallInterfaces(SM::ServiceManager& sm);
void InstallInterfaces(SM::ServiceManager& sm, Core::System& system);
} // namespace Service::LDR } // namespace Service::LDR
Loading…
Cancel
Save