Merge pull request #8164 from liamwhite/jit-stub

service: jit: stub JIT service
This commit is contained in:
bunnei 2022-04-06 18:34:45 -07:00 committed by GitHub
commit 172137f1a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 88 additions and 1 deletions

View file

@ -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) \

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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;

View 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

View 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

View file

@ -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);