Hi, I'm working on a project which requires a PowerPC program running inside dolphin to communicate with a normal x86 application. Communicating over the Gamecube broadband adapter is very likely to slow and I read that it requires additional setup. So I decided on using IPC. Because the Gamecube code can't use any of the IPC mechanisms provided by the host OS (shared memory, pipes, etc) my plan is to reserve a small part of the Gamecube's memory and use it like a shared memory region via debugging functions like WriteProcessMemory or process_vm_writev. In order to make those writes by another program immediately visible to the PowerPC application the data needs to be always fetched from RAM (via a volatile pointer). Question: If the PowerPC code requests an uncached read does the JIT also spit out an uncached read on the host CPU? Further x86 processors have out of order execution and as such mfence, lfence and sfence instructions while the Gekko CPU doesn't. How does Dolphin deal with reordering of instructions that wouldn't have taken place on the original Gamecube? Is there a way to make dolphin spit out mfence instructions? Is reliable IPC even possible between an x86 program and a Gamecube game? Or is there a better way of communication I have missed?
I hope my plan isn't too far fetched and makes somewhat sense. In case I'm horribly confused about something please let me know.
I hope my plan isn't too far fetched and makes somewhat sense. In case I'm horribly confused about something please let me know.