Add events to shared memory, make it work better with direct memory

This commit is contained in:
gdkchan 2018-02-17 18:36:08 -03:00
parent 161193e113
commit ebddc40550
7 changed files with 116 additions and 31 deletions

View file

@ -65,21 +65,18 @@ namespace Ryujinx.OsHle.Svc
private void SvcMapSharedMemory(ARegisters Registers)
{
int Handle = (int)Registers.X0;
long Position = (long)Registers.X1;
long Size = (long)Registers.X2;
int Perm = (int)Registers.X3;
int Handle = (int)Registers.X0;
long Src = (long)Registers.X1;
long Size = (long)Registers.X2;
int Perm = (int)Registers.X3;
HSharedMem HndData = Ns.Os.Handles.GetData<HSharedMem>(Handle);
HSharedMem SharedMem = Ns.Os.Handles.GetData<HSharedMem>(Handle);
if (HndData != null)
if (SharedMem != null)
{
long Src = Position;
long Dst = HndData.PhysPos;
SharedMem.AddVirtualPosition(Src);
HndData.VirtPos = Src;
Memory.Manager.MapPhys(Position, Size, (int)MemoryType.SharedMemory, (AMemoryPerm)Perm);
Memory.Manager.MapPhys(Src, Size, (int)MemoryType.SharedMemory, (AMemoryPerm)Perm);
Registers.X0 = (int)SvcResult.Success;
}