mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-19 20:19:13 +12:00
[Services] Uhh implement IPC result header which apparently libctru's apt code nees
This commit is contained in:
parent
fecf038982
commit
2b492a435e
22 changed files with 153 additions and 9 deletions
|
@ -1,4 +1,5 @@
|
|||
#include "services/gsp_gpu.hpp"
|
||||
#include "ipc.hpp"
|
||||
|
||||
// Commands used with SendSyncRequest targetted to the GSP::GPU service
|
||||
namespace ServiceCommands {
|
||||
|
@ -72,6 +73,7 @@ void GPUService::acquireRight(u32 messagePointer) {
|
|||
privilegedProcess = pid;
|
||||
}
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x16, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
|
@ -88,7 +90,8 @@ void GPUService::registerInterruptRelayQueue(u32 messagePointer) {
|
|||
const u32 eventHandle = mem.read32(messagePointer + 12);
|
||||
log("GSP::GPU::RegisterInterruptRelayQueue (flags = %X, event handle = %X)\n", flags, eventHandle);
|
||||
|
||||
mem.write32(messagePointer + 4, Result::SuccessRegisterIRQ);
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x13, 2, 2));
|
||||
mem.write32(messagePointer + 4, Result::SuccessRegisterIRQ); // First init returns a unique result
|
||||
mem.write32(messagePointer + 8, 0); // TODO: GSP module thread index
|
||||
mem.write32(messagePointer + 12, 0); // Translation descriptor
|
||||
mem.write32(messagePointer + 16, KernelHandles::GSPSharedMemHandle);
|
||||
|
@ -134,6 +137,8 @@ void GPUService::writeHwRegs(u32 messagePointer) {
|
|||
dataPointer += 4;
|
||||
ioAddr += 4;
|
||||
}
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x1, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
|
@ -176,6 +181,7 @@ void GPUService::writeHwRegsWithMask(u32 messagePointer) {
|
|||
ioAddr += 4;
|
||||
}
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x2, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
|
@ -185,6 +191,7 @@ void GPUService::flushDataCache(u32 messagePointer) {
|
|||
u32 processHandle = handle = mem.read32(messagePointer + 16);
|
||||
log("GSP::GPU::FlushDataCache(address = %08X, size = %X, process = %X\n", address, size, processHandle);
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x8, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
|
@ -194,6 +201,7 @@ void GPUService::storeDataCache(u32 messagePointer) {
|
|||
u32 processHandle = handle = mem.read32(messagePointer + 16);
|
||||
log("GSP::GPU::StoreDataCache(address = %08X, size = %X, process = %X\n", address, size, processHandle);
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x1F, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
|
@ -205,23 +213,27 @@ void GPUService::setLCDForceBlack(u32 messagePointer) {
|
|||
printf("Filled both LCDs with black\n");
|
||||
}
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0xB, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
void GPUService::triggerCmdReqQueue(u32 messagePointer) {
|
||||
processCommandBuffer();
|
||||
mem.write32(messagePointer, IPC::responseHeader(0xC, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
// Seems to be completely undocumented, probably not very important or useful
|
||||
void GPUService::setAxiConfigQoSMode(u32 messagePointer) {
|
||||
log("GSP::GPU::SetAxiConfigQoSMode\n");
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x10, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
// Seems to also be completely undocumented
|
||||
void GPUService::setInternalPriorities(u32 messagePointer) {
|
||||
log("GSP::GPU::SetInternalPriorities\n");
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x1E, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue