diff options
author | David Marcec <dmarcecguzman@gmail.com> | 2018-05-17 23:03:52 +0200 |
---|---|---|
committer | David Marcec <dmarcecguzman@gmail.com> | 2018-05-17 23:03:52 +0200 |
commit | fd86cdb2e24a72f099889393da8236002be04565 (patch) | |
tree | 66aa2db4a4514c1cc82383f7d3e2d6d92d0c0cb4 /src/core | |
parent | Merge pull request #436 from bunnei/multi-core (diff) | |
download | yuzu-fd86cdb2e24a72f099889393da8236002be04565.tar yuzu-fd86cdb2e24a72f099889393da8236002be04565.tar.gz yuzu-fd86cdb2e24a72f099889393da8236002be04565.tar.bz2 yuzu-fd86cdb2e24a72f099889393da8236002be04565.tar.lz yuzu-fd86cdb2e24a72f099889393da8236002be04565.tar.xz yuzu-fd86cdb2e24a72f099889393da8236002be04565.tar.zst yuzu-fd86cdb2e24a72f099889393da8236002be04565.zip |
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/hle/ipc.h | 2 | ||||
-rw-r--r-- | src/core/hle/kernel/hle_ipc.cpp | 4 | ||||
-rw-r--r-- | src/core/hle/service/service.cpp | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h index ef6595550..c9257de77 100644 --- a/src/core/hle/ipc.h +++ b/src/core/hle/ipc.h @@ -32,6 +32,8 @@ enum class CommandType : u32 { Close = 2, Request = 4, Control = 5, + RequestWithContext = 6, + ControlWithContext = 7, Unspecified, }; diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 349bc11df..01904467e 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -110,7 +110,9 @@ void HLERequestContext::ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming) { // Padding to align to 16 bytes rp.AlignWithPadding(); - if (Session()->IsDomain() && (command_header->type == IPC::CommandType::Request || !incoming)) { + if (Session()->IsDomain() && ((command_header->type == IPC::CommandType::Request || + command_header->type == IPC::CommandType::RequestWithContext) || + !incoming)) { // If this is an incoming message, only CommandType "Request" has a domain header // All outgoing domain messages have the domain header, if only incoming has it if (incoming || domain_message_header) { diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index dc30702c6..5b91089cf 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -144,10 +144,12 @@ ResultCode ServiceFrameworkBase::HandleSyncRequest(Kernel::HLERequestContext& co rb.Push(RESULT_SUCCESS); return ResultCode(ErrorModule::HIPC, ErrorDescription::RemoteProcessDead); } + case IPC::CommandType::ControlWithContext: case IPC::CommandType::Control: { Core::System::GetInstance().ServiceManager().InvokeControlRequest(context); break; } + case IPC::CommandType::RequestWithContext: case IPC::CommandType::Request: { InvokeRequest(context); break; |