Implement SvcMapPhysicalMemory & SvcUnmapPhysicalMemory

This commit is contained in:
Starlet 2018-05-22 15:19:09 -04:00
parent 46053f72d4
commit b396ff01bc
2 changed files with 22 additions and 0 deletions

View file

@ -69,6 +69,8 @@ namespace Ryujinx.Core.OsHle.Kernel
{ 0x26, SvcBreak },
{ 0x27, SvcOutputDebugString },
{ 0x29, SvcGetInfo },
{ 0x2c, SvcMapPhysicalMemory },
{ 0x2d, SvcUnmapPhysicalMemory },
{ 0x32, SvcSetThreadActivity }
};

View file

@ -250,6 +250,26 @@ namespace Ryujinx.Core.OsHle.Kernel
ThreadState.X1 = Handle;
}
private void SvcMapPhysicalMemory(AThreadState ThreadState)
{
long Position = (long)ThreadState.X0;
uint Size = (uint)ThreadState.X1;
Memory.Manager.Map(Position, Size, (int)MemoryType.Heap, AMemoryPerm.RW);
ThreadState.X0 = 0;
}
private void SvcUnmapPhysicalMemory(AThreadState ThreadState)
{
long Position = (long)ThreadState.X0;
uint Size = (uint)ThreadState.X1;
Memory.Manager.Unmap(Position, Size);
ThreadState.X0 = 0;
}
private static bool IsValidPosition(long Position)
{
return Position >= MemoryRegions.AddrSpaceStart &&