mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-12 09:09:47 +12:00
[DSP] Stub InvalidateDataCache
This commit is contained in:
parent
27fbcee355
commit
0f9d94a7d0
2 changed files with 18 additions and 6 deletions
|
@ -53,6 +53,7 @@ class DSPService {
|
||||||
void flushDataCache(u32 messagePointer);
|
void flushDataCache(u32 messagePointer);
|
||||||
void getHeadphoneStatus(u32 messagePointer);
|
void getHeadphoneStatus(u32 messagePointer);
|
||||||
void getSemaphoreHandle(u32 messagePointer);
|
void getSemaphoreHandle(u32 messagePointer);
|
||||||
|
void invalidateDCache(u32 messagePointer);
|
||||||
void loadComponent(u32 messagePointer);
|
void loadComponent(u32 messagePointer);
|
||||||
void readPipeIfPossible(u32 messagePointer);
|
void readPipeIfPossible(u32 messagePointer);
|
||||||
void registerInterruptEvents(u32 messagePointer);
|
void registerInterruptEvents(u32 messagePointer);
|
||||||
|
|
|
@ -8,6 +8,7 @@ namespace DSPCommands {
|
||||||
ReadPipeIfPossible = 0x001000C0,
|
ReadPipeIfPossible = 0x001000C0,
|
||||||
LoadComponent = 0x001100C2,
|
LoadComponent = 0x001100C2,
|
||||||
FlushDataCache = 0x00130082,
|
FlushDataCache = 0x00130082,
|
||||||
|
InvalidateDataCache = 0x00140082,
|
||||||
RegisterInterruptEvents = 0x00150082,
|
RegisterInterruptEvents = 0x00150082,
|
||||||
GetSemaphoreHandle = 0x00160000,
|
GetSemaphoreHandle = 0x00160000,
|
||||||
SetSemaphoreMask = 0x00170040,
|
SetSemaphoreMask = 0x00170040,
|
||||||
|
@ -32,6 +33,7 @@ void DSPService::handleSyncRequest(u32 messagePointer) {
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case DSPCommands::ConvertProcessAddressFromDspDram: convertProcessAddressFromDspDram(messagePointer); break;
|
case DSPCommands::ConvertProcessAddressFromDspDram: convertProcessAddressFromDspDram(messagePointer); break;
|
||||||
case DSPCommands::FlushDataCache: flushDataCache(messagePointer); break;
|
case DSPCommands::FlushDataCache: flushDataCache(messagePointer); break;
|
||||||
|
case DSPCommands::InvalidateDataCache: invalidateDCache(messagePointer); break;
|
||||||
case DSPCommands::GetHeadphoneStatus: getHeadphoneStatus(messagePointer); break;
|
case DSPCommands::GetHeadphoneStatus: getHeadphoneStatus(messagePointer); break;
|
||||||
case DSPCommands::GetSemaphoreHandle: getSemaphoreHandle(messagePointer); break;
|
case DSPCommands::GetSemaphoreHandle: getSemaphoreHandle(messagePointer); break;
|
||||||
case DSPCommands::LoadComponent: loadComponent(messagePointer); break;
|
case DSPCommands::LoadComponent: loadComponent(messagePointer); break;
|
||||||
|
@ -129,19 +131,28 @@ void DSPService::setSemaphoreMask(u32 messagePointer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSPService::writeProcessPipe(u32 messagePointer) {
|
void DSPService::writeProcessPipe(u32 messagePointer) {
|
||||||
u32 channel = mem.read32(messagePointer + 4);
|
const u32 channel = mem.read32(messagePointer + 4);
|
||||||
u32 size = mem.read32(messagePointer + 8);
|
const u32 size = mem.read32(messagePointer + 8);
|
||||||
u32 buffer = mem.read32(messagePointer + 16);
|
const u32 buffer = mem.read32(messagePointer + 16);
|
||||||
|
|
||||||
log("DSP::writeProcessPipe (channel = %d, size = %X, buffer = %08X)\n", channel, size, buffer);
|
log("DSP::writeProcessPipe (channel = %d, size = %X, buffer = %08X)\n", channel, size, buffer);
|
||||||
mem.write32(messagePointer + 4, Result::Success);
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSPService::flushDataCache(u32 messagePointer) {
|
void DSPService::flushDataCache(u32 messagePointer) {
|
||||||
u32 address = mem.read32(messagePointer + 4);
|
const u32 address = mem.read32(messagePointer + 4);
|
||||||
u32 size = mem.read32(messagePointer + 8);
|
const u32 size = mem.read32(messagePointer + 8);
|
||||||
u32 process = mem.read32(messagePointer + 16);
|
const Handle process = mem.read32(messagePointer + 16);
|
||||||
|
|
||||||
log("DSP::FlushDataCache (addr = %08X, size = %08X, process = %X)\n", address, size, process);
|
log("DSP::FlushDataCache (addr = %08X, size = %08X, process = %X)\n", address, size, process);
|
||||||
mem.write32(messagePointer + 4, Result::Success);
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DSPService::invalidateDCache(u32 messagePointer) {
|
||||||
|
const u32 address = mem.read32(messagePointer + 4);
|
||||||
|
const u32 size = mem.read32(messagePointer + 8);
|
||||||
|
const Handle process = mem.read32(messagePointer + 16);
|
||||||
|
|
||||||
|
log("DSP::InvalidateDataCache (addr = %08X, size = %08X, process = %X)\n", address, size, process);
|
||||||
|
mem.write32(messagePointer + 4, Result::Success);
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue