hle: Eliminate need to specify command headers for IPC. (#6678)

This commit is contained in:
Steveice10
2023-07-14 17:32:59 -07:00
committed by GitHub
parent 0bedb28bdc
commit e043caac27
96 changed files with 2691 additions and 2707 deletions

View File

@@ -60,7 +60,7 @@ static bool VerifyBufferState(Kernel::Process& process, VAddr buffer_ptr, u32 si
}
void RO::Initialize(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x01, 3, 2);
IPC::RequestParser rp(ctx);
VAddr crs_buffer_ptr = rp.Pop<u32>();
u32 crs_size = rp.Pop<u32>();
VAddr crs_address = rp.Pop<u32>();
@@ -143,7 +143,7 @@ void RO::Initialize(Kernel::HLERequestContext& ctx) {
}
void RO::LoadCRR(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x02, 2, 2);
IPC::RequestParser rp(ctx);
VAddr crr_buffer_ptr = rp.Pop<u32>();
u32 crr_size = rp.Pop<u32>();
auto process = rp.PopObject<Kernel::Process>();
@@ -156,7 +156,7 @@ void RO::LoadCRR(Kernel::HLERequestContext& ctx) {
}
void RO::UnloadCRR(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x03, 1, 2);
IPC::RequestParser rp(ctx);
u32 crr_buffer_ptr = rp.Pop<u32>();
auto process = rp.PopObject<Kernel::Process>();
@@ -167,7 +167,7 @@ void RO::UnloadCRR(Kernel::HLERequestContext& ctx) {
}
void RO::LoadCRO(Kernel::HLERequestContext& ctx, bool link_on_load_bug_fix) {
IPC::RequestParser rp(ctx, link_on_load_bug_fix ? 0x09 : 0x04, 11, 2);
IPC::RequestParser rp(ctx);
VAddr cro_buffer_ptr = rp.Pop<u32>();
VAddr cro_address = rp.Pop<u32>();
u32 cro_size = rp.Pop<u32>();
@@ -334,7 +334,7 @@ void RO::LoadCRO(Kernel::HLERequestContext& ctx, bool link_on_load_bug_fix) {
}
void RO::UnloadCRO(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x05, 3, 2);
IPC::RequestParser rp(ctx);
VAddr cro_address = rp.Pop<u32>();
u32 zero = rp.Pop<u32>();
VAddr cro_buffer_ptr = rp.Pop<u32>();
@@ -404,7 +404,7 @@ void RO::UnloadCRO(Kernel::HLERequestContext& ctx) {
}
void RO::LinkCRO(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x06, 1, 2);
IPC::RequestParser rp(ctx);
VAddr cro_address = rp.Pop<u32>();
auto process = rp.PopObject<Kernel::Process>();
@@ -444,7 +444,7 @@ void RO::LinkCRO(Kernel::HLERequestContext& ctx) {
}
void RO::UnlinkCRO(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x07, 1, 2);
IPC::RequestParser rp(ctx);
VAddr cro_address = rp.Pop<u32>();
auto process = rp.PopObject<Kernel::Process>();
@@ -484,7 +484,7 @@ void RO::UnlinkCRO(Kernel::HLERequestContext& ctx) {
}
void RO::Shutdown(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x08, 1, 2);
IPC::RequestParser rp(ctx);
VAddr crs_buffer_ptr = rp.Pop<u32>();
auto process = rp.PopObject<Kernel::Process>();
@@ -517,15 +517,15 @@ void RO::Shutdown(Kernel::HLERequestContext& ctx) {
RO::RO(Core::System& system) : ServiceFramework("ldr:ro", 2), system(system) {
static const FunctionInfo functions[] = {
// clang-format off
{IPC::MakeHeader(0x0001, 3, 2), &RO::Initialize, "Initialize"},
{IPC::MakeHeader(0x0002, 2, 2), &RO::LoadCRR, "LoadCRR"},
{IPC::MakeHeader(0x0003, 1, 2), &RO::UnloadCRR, "UnloadCRR"},
{IPC::MakeHeader(0x0004, 11, 2), &RO::LoadCRO<false>, "LoadCRO"},
{IPC::MakeHeader(0x0005, 3, 2), &RO::UnloadCRO, "UnloadCRO"},
{IPC::MakeHeader(0x0006, 1, 2), &RO::LinkCRO, "LinkCRO"},
{IPC::MakeHeader(0x0007, 1, 2), &RO::UnlinkCRO, "UnlinkCRO"},
{IPC::MakeHeader(0x0008, 1, 2), &RO::Shutdown, "Shutdown"},
{IPC::MakeHeader(0x0009, 11, 2), &RO::LoadCRO<true>, "LoadCRO_New"},
{0x0001, &RO::Initialize, "Initialize"},
{0x0002, &RO::LoadCRR, "LoadCRR"},
{0x0003, &RO::UnloadCRR, "UnloadCRR"},
{0x0004, &RO::LoadCRO<false>, "LoadCRO"},
{0x0005, &RO::UnloadCRO, "UnloadCRO"},
{0x0006, &RO::LinkCRO, "LinkCRO"},
{0x0007, &RO::UnlinkCRO, "UnlinkCRO"},
{0x0008, &RO::Shutdown, "Shutdown"},
{0x0009, &RO::LoadCRO<true>, "LoadCRO_New"},
// clang-format on
};
RegisterHandlers(functions);