forked from suyu/suyu
Merge pull request #8164 from liamwhite/jit-stub
service: jit: stub JIT service
This commit is contained in:
commit
172137f1a0
8 changed files with 88 additions and 1 deletions
|
@ -101,6 +101,7 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
|
||||||
SUB(Service, GRC) \
|
SUB(Service, GRC) \
|
||||||
SUB(Service, HID) \
|
SUB(Service, HID) \
|
||||||
SUB(Service, IRS) \
|
SUB(Service, IRS) \
|
||||||
|
SUB(Service, JIT) \
|
||||||
SUB(Service, LBL) \
|
SUB(Service, LBL) \
|
||||||
SUB(Service, LDN) \
|
SUB(Service, LDN) \
|
||||||
SUB(Service, LDR) \
|
SUB(Service, LDR) \
|
||||||
|
|
|
@ -69,6 +69,7 @@ enum class Class : u8 {
|
||||||
Service_GRC, ///< The game recording service
|
Service_GRC, ///< The game recording service
|
||||||
Service_HID, ///< The HID (Human interface device) service
|
Service_HID, ///< The HID (Human interface device) service
|
||||||
Service_IRS, ///< The IRS service
|
Service_IRS, ///< The IRS service
|
||||||
|
Service_JIT, ///< The JIT service
|
||||||
Service_LBL, ///< The LBL (LCD backlight) service
|
Service_LBL, ///< The LBL (LCD backlight) service
|
||||||
Service_LDN, ///< The LDN (Local domain network) service
|
Service_LDN, ///< The LDN (Local domain network) service
|
||||||
Service_LDR, ///< The loader service
|
Service_LDR, ///< The loader service
|
||||||
|
|
|
@ -458,6 +458,8 @@ add_library(core STATIC
|
||||||
hle/service/hid/controllers/touchscreen.h
|
hle/service/hid/controllers/touchscreen.h
|
||||||
hle/service/hid/controllers/xpad.cpp
|
hle/service/hid/controllers/xpad.cpp
|
||||||
hle/service/hid/controllers/xpad.h
|
hle/service/hid/controllers/xpad.h
|
||||||
|
hle/service/jit/jit.cpp
|
||||||
|
hle/service/jit/jit.h
|
||||||
hle/service/lbl/lbl.cpp
|
hle/service/lbl/lbl.cpp
|
||||||
hle/service/lbl/lbl.h
|
hle/service/lbl/lbl.h
|
||||||
hle/service/ldn/errors.h
|
hle/service/ldn/errors.h
|
||||||
|
|
|
@ -1337,7 +1337,7 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_)
|
||||||
{200, nullptr, "GetLastApplicationExitReason"},
|
{200, nullptr, "GetLastApplicationExitReason"},
|
||||||
{500, nullptr, "StartContinuousRecordingFlushForDebug"},
|
{500, nullptr, "StartContinuousRecordingFlushForDebug"},
|
||||||
{1000, nullptr, "CreateMovieMaker"},
|
{1000, nullptr, "CreateMovieMaker"},
|
||||||
{1001, nullptr, "PrepareForJit"},
|
{1001, &IApplicationFunctions::PrepareForJit, "PrepareForJit"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
@ -1787,6 +1787,13 @@ void IApplicationFunctions::GetHealthWarningDisappearedSystemEvent(Kernel::HLERe
|
||||||
rb.PushCopyObjects(health_warning_disappeared_system_event->GetReadableEvent());
|
rb.PushCopyObjects(health_warning_disappeared_system_event->GetReadableEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IApplicationFunctions::PrepareForJit(Kernel::HLERequestContext& ctx) {
|
||||||
|
LOG_WARNING(Service_AM, "(STUBBED) called");
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(ResultSuccess);
|
||||||
|
}
|
||||||
|
|
||||||
void InstallInterfaces(SM::ServiceManager& service_manager, NVFlinger::NVFlinger& nvflinger,
|
void InstallInterfaces(SM::ServiceManager& service_manager, NVFlinger::NVFlinger& nvflinger,
|
||||||
Core::System& system) {
|
Core::System& system) {
|
||||||
auto message_queue = std::make_shared<AppletMessageQueue>(system);
|
auto message_queue = std::make_shared<AppletMessageQueue>(system);
|
||||||
|
|
|
@ -336,6 +336,7 @@ private:
|
||||||
void TryPopFromFriendInvitationStorageChannel(Kernel::HLERequestContext& ctx);
|
void TryPopFromFriendInvitationStorageChannel(Kernel::HLERequestContext& ctx);
|
||||||
void GetNotificationStorageChannelEvent(Kernel::HLERequestContext& ctx);
|
void GetNotificationStorageChannelEvent(Kernel::HLERequestContext& ctx);
|
||||||
void GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx);
|
void GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx);
|
||||||
|
void PrepareForJit(Kernel::HLERequestContext& ctx);
|
||||||
|
|
||||||
KernelHelpers::ServiceContext service_context;
|
KernelHelpers::ServiceContext service_context;
|
||||||
|
|
||||||
|
|
53
src/core/hle/service/jit/jit.cpp
Normal file
53
src/core/hle/service/jit/jit.cpp
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
// Copyright 2022 yuzu Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "core/hle/ipc_helpers.h"
|
||||||
|
#include "core/hle/result.h"
|
||||||
|
#include "core/hle/service/jit/jit.h"
|
||||||
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
namespace Service::JIT {
|
||||||
|
|
||||||
|
class IJitEnvironment final : public ServiceFramework<IJitEnvironment> {
|
||||||
|
public:
|
||||||
|
explicit IJitEnvironment(Core::System& system_) : ServiceFramework{system_, "IJitEnvironment"} {
|
||||||
|
// clang-format off
|
||||||
|
static const FunctionInfo functions[] = {
|
||||||
|
{0, nullptr, "GenerateCode"},
|
||||||
|
{1, nullptr, "Control"},
|
||||||
|
{1000, nullptr, "LoadPlugin"},
|
||||||
|
{1001, nullptr, "GetCodeAddress"},
|
||||||
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
RegisterHandlers(functions);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class JITU final : public ServiceFramework<JITU> {
|
||||||
|
public:
|
||||||
|
explicit JITU(Core::System& system_) : ServiceFramework{system_, "jit:u"} {
|
||||||
|
// clang-format off
|
||||||
|
static const FunctionInfo functions[] = {
|
||||||
|
{0, &JITU::CreateJitEnvironment, "CreateJitEnvironment"},
|
||||||
|
};
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
RegisterHandlers(functions);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateJitEnvironment(Kernel::HLERequestContext& ctx) {
|
||||||
|
LOG_DEBUG(Service_JIT, "called");
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
||||||
|
rb.Push(ResultSuccess);
|
||||||
|
rb.PushIpcInterface<IJitEnvironment>(system);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) {
|
||||||
|
std::make_shared<JITU>(system)->InstallAsService(sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Service::JIT
|
20
src/core/hle/service/jit/jit.h
Normal file
20
src/core/hle/service/jit/jit.h
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
// Copyright 2022 yuzu Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace Core {
|
||||||
|
class System;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Service::SM {
|
||||||
|
class ServiceManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Service::JIT {
|
||||||
|
|
||||||
|
/// Registers all JIT services with the specified service manager.
|
||||||
|
void InstallInterfaces(SM::ServiceManager& sm, Core::System& system);
|
||||||
|
|
||||||
|
} // namespace Service::JIT
|
|
@ -32,6 +32,7 @@
|
||||||
#include "core/hle/service/glue/glue.h"
|
#include "core/hle/service/glue/glue.h"
|
||||||
#include "core/hle/service/grc/grc.h"
|
#include "core/hle/service/grc/grc.h"
|
||||||
#include "core/hle/service/hid/hid.h"
|
#include "core/hle/service/hid/hid.h"
|
||||||
|
#include "core/hle/service/jit/jit.h"
|
||||||
#include "core/hle/service/lbl/lbl.h"
|
#include "core/hle/service/lbl/lbl.h"
|
||||||
#include "core/hle/service/ldn/ldn.h"
|
#include "core/hle/service/ldn/ldn.h"
|
||||||
#include "core/hle/service/ldr/ldr.h"
|
#include "core/hle/service/ldr/ldr.h"
|
||||||
|
@ -262,6 +263,7 @@ Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system
|
||||||
Glue::InstallInterfaces(system);
|
Glue::InstallInterfaces(system);
|
||||||
GRC::InstallInterfaces(*sm, system);
|
GRC::InstallInterfaces(*sm, system);
|
||||||
HID::InstallInterfaces(*sm, system);
|
HID::InstallInterfaces(*sm, system);
|
||||||
|
JIT::InstallInterfaces(*sm, system);
|
||||||
LBL::InstallInterfaces(*sm, system);
|
LBL::InstallInterfaces(*sm, system);
|
||||||
LDN::InstallInterfaces(*sm, system);
|
LDN::InstallInterfaces(*sm, system);
|
||||||
LDR::InstallInterfaces(*sm, system);
|
LDR::InstallInterfaces(*sm, system);
|
||||||
|
|
Loading…
Reference in a new issue