mirror of
https://github.com/PabloMK7/citra.git
synced 2025-09-12 05:40:04 +00:00
hle: Eliminate need to specify command headers for IPC. (#6678)
This commit is contained in:
parent
0bedb28bdc
commit
e043caac27
96 changed files with 2691 additions and 2707 deletions
|
@ -191,7 +191,7 @@ struct CaptureState {
|
|||
static_assert(sizeof(CaptureState) == 0x8, "CaptureState structure size is wrong");
|
||||
|
||||
void CSND_SND::Initialize(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x01, 5, 0);
|
||||
IPC::RequestParser rp(ctx);
|
||||
const u32 size = Common::AlignUp(rp.Pop<u32>(), Memory::CITRA_PAGE_SIZE);
|
||||
master_state_offset = rp.Pop<u32>();
|
||||
channel_state_offset = rp.Pop<u32>();
|
||||
|
@ -219,7 +219,7 @@ void CSND_SND::Initialize(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::Shutdown(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x02, 0, 0);
|
||||
IPC::RequestParser rp(ctx);
|
||||
|
||||
if (mutex)
|
||||
mutex = nullptr;
|
||||
|
@ -233,7 +233,7 @@ void CSND_SND::Shutdown(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::ExecuteCommands(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x03, 1, 0);
|
||||
IPC::RequestParser rp(ctx);
|
||||
const u32 addr = rp.Pop<u32>();
|
||||
LOG_WARNING(Service_CSND, "(STUBBED) called, addr=0x{:08X}", addr);
|
||||
|
||||
|
@ -397,7 +397,7 @@ void CSND_SND::ExecuteCommands(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::AcquireSoundChannels(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x05, 0, 0);
|
||||
IPC::RequestParser rp(ctx);
|
||||
|
||||
// This is "almost" hardcoded, as in CSND initializes this with some code during sysmodule
|
||||
// startup, but it always compute to the same value.
|
||||
|
@ -411,7 +411,7 @@ void CSND_SND::AcquireSoundChannels(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::ReleaseSoundChannels(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x06, 0, 0);
|
||||
IPC::RequestParser rp(ctx);
|
||||
|
||||
acquired_channel_mask = 0;
|
||||
|
||||
|
@ -422,7 +422,7 @@ void CSND_SND::ReleaseSoundChannels(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::AcquireCapUnit(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x7, 0, 0);
|
||||
IPC::RequestParser rp(ctx);
|
||||
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
||||
if (capture_units[0] && capture_units[1]) {
|
||||
|
@ -446,7 +446,7 @@ void CSND_SND::AcquireCapUnit(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::ReleaseCapUnit(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x8, 1, 0);
|
||||
IPC::RequestParser rp(ctx);
|
||||
const u32 index = rp.Pop<u32>();
|
||||
|
||||
capture_units[index] = false;
|
||||
|
@ -458,7 +458,7 @@ void CSND_SND::ReleaseCapUnit(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::FlushDataCache(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x9, 2, 2);
|
||||
IPC::RequestParser rp(ctx);
|
||||
[[maybe_unused]] const VAddr address = rp.Pop<u32>();
|
||||
[[maybe_unused]] const u32 size = rp.Pop<u32>();
|
||||
const auto process = rp.PopObject<Kernel::Process>();
|
||||
|
@ -471,7 +471,7 @@ void CSND_SND::FlushDataCache(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::StoreDataCache(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0xA, 2, 2);
|
||||
IPC::RequestParser rp(ctx);
|
||||
[[maybe_unused]] const VAddr address = rp.Pop<u32>();
|
||||
[[maybe_unused]] const u32 size = rp.Pop<u32>();
|
||||
const auto process = rp.PopObject<Kernel::Process>();
|
||||
|
@ -484,7 +484,7 @@ void CSND_SND::StoreDataCache(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::InvalidateDataCache(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0xB, 2, 2);
|
||||
IPC::RequestParser rp(ctx);
|
||||
[[maybe_unused]] const VAddr address = rp.Pop<u32>();
|
||||
[[maybe_unused]] const u32 size = rp.Pop<u32>();
|
||||
const auto process = rp.PopObject<Kernel::Process>();
|
||||
|
@ -497,7 +497,7 @@ void CSND_SND::InvalidateDataCache(Kernel::HLERequestContext& ctx) {
|
|||
}
|
||||
|
||||
void CSND_SND::Reset(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0xC, 0, 0);
|
||||
IPC::RequestParser rp(ctx);
|
||||
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
|
||||
rb.Push(RESULT_SUCCESS);
|
||||
|
@ -508,18 +508,18 @@ void CSND_SND::Reset(Kernel::HLERequestContext& ctx) {
|
|||
CSND_SND::CSND_SND(Core::System& system) : ServiceFramework("csnd:SND", 4), system(system) {
|
||||
static const FunctionInfo functions[] = {
|
||||
// clang-format off
|
||||
{IPC::MakeHeader(0x0001, 5, 0), &CSND_SND::Initialize, "Initialize"},
|
||||
{IPC::MakeHeader(0x0002, 0, 0), &CSND_SND::Shutdown, "Shutdown"},
|
||||
{IPC::MakeHeader(0x0003, 1, 0), &CSND_SND::ExecuteCommands, "ExecuteCommands"},
|
||||
{IPC::MakeHeader(0x0004, 2, 0), nullptr, "ExecuteType1Commands"},
|
||||
{IPC::MakeHeader(0x0005, 0, 0), &CSND_SND::AcquireSoundChannels, "AcquireSoundChannels"},
|
||||
{IPC::MakeHeader(0x0006, 0, 0), &CSND_SND::ReleaseSoundChannels, "ReleaseSoundChannels"},
|
||||
{IPC::MakeHeader(0x0007, 0, 0), &CSND_SND::AcquireCapUnit, "AcquireCapUnit"},
|
||||
{IPC::MakeHeader(0x0008, 1, 0), &CSND_SND::ReleaseCapUnit, "ReleaseCapUnit"},
|
||||
{IPC::MakeHeader(0x0009, 2, 2), &CSND_SND::FlushDataCache, "FlushDataCache"},
|
||||
{IPC::MakeHeader(0x000A, 2, 2), &CSND_SND::StoreDataCache, "StoreDataCache"},
|
||||
{IPC::MakeHeader(0x000B, 2, 2), &CSND_SND::InvalidateDataCache, "InvalidateDataCache"},
|
||||
{IPC::MakeHeader(0x000C, 0, 0), &CSND_SND::Reset, "Reset"},
|
||||
{0x0001, &CSND_SND::Initialize, "Initialize"},
|
||||
{0x0002, &CSND_SND::Shutdown, "Shutdown"},
|
||||
{0x0003, &CSND_SND::ExecuteCommands, "ExecuteCommands"},
|
||||
{0x0004, nullptr, "ExecuteType1Commands"},
|
||||
{0x0005, &CSND_SND::AcquireSoundChannels, "AcquireSoundChannels"},
|
||||
{0x0006, &CSND_SND::ReleaseSoundChannels, "ReleaseSoundChannels"},
|
||||
{0x0007, &CSND_SND::AcquireCapUnit, "AcquireCapUnit"},
|
||||
{0x0008, &CSND_SND::ReleaseCapUnit, "ReleaseCapUnit"},
|
||||
{0x0009, &CSND_SND::FlushDataCache, "FlushDataCache"},
|
||||
{0x000A, &CSND_SND::StoreDataCache, "StoreDataCache"},
|
||||
{0x000B, &CSND_SND::InvalidateDataCache, "InvalidateDataCache"},
|
||||
{0x000C, &CSND_SND::Reset, "Reset"},
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue