Should reset this flag in the GSP (needs better name)

This commit is contained in:
SimoneN64 2023-07-10 23:04:07 +02:00
parent 7ad47875b6
commit 49101037b8
2 changed files with 4 additions and 3 deletions

View file

@ -22,6 +22,7 @@ enum class GPUInterrupt : u8 {
class Kernel;
class GPUService {
bool registerInterruptRelayQueueBeenHere = false;
Handle handle = KernelHandles::GPU;
Memory& mem;
GPU& gpu;

View file

@ -34,6 +34,7 @@ void GPUService::reset() {
privilegedProcess = 0xFFFFFFFF; // Set the privileged process to an invalid handle
interruptEvent = std::nullopt;
sharedMem = nullptr;
registerInterruptRelayQueueBeenHere = false;
}
void GPUService::handleSyncRequest(u32 messagePointer) {
@ -77,9 +78,8 @@ void GPUService::acquireRight(u32 messagePointer) {
// How does the shared memory handle thing work?
void GPUService::registerInterruptRelayQueue(u32 messagePointer) {
// Detect if this function is called a 2nd time because we'll likely need to impl threads properly for the GSP
static bool beenHere = false;
if (beenHere) Helpers::panic("RegisterInterruptRelayQueue called a second time. Need to implement GSP threads properly");
beenHere = true;
if (registerInterruptRelayQueueBeenHere) Helpers::panic("RegisterInterruptRelayQueue called a second time. Need to implement GSP threads properly");
registerInterruptRelayQueueBeenHere = true;
const u32 flags = mem.read32(messagePointer + 4);
const u32 eventHandle = mem.read32(messagePointer + 12);