Optimize address translation and write tracking on the MMU (#571)
* Implement faster address translation and write tracking on the MMU * Rename MemoryAlloc to MemoryManagement, and other nits * Support multi-level page tables * Fix typo * Reword comment a bit * Support scalar vector loads/stores on the memory fast path, and minor fixes * Add missing cast * Alignment * Fix VirtualFree function signature * Change MemoryProtection enum to uint aswell for consistency
This commit is contained in:
parent
a3d46e4133
commit
5001f78b1d
24 changed files with 1005 additions and 621 deletions
|
@ -1,5 +1,5 @@
|
|||
using ChocolArm64.Memory;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Ryujinx.HLE
|
||||
{
|
||||
|
@ -7,13 +7,13 @@ namespace Ryujinx.HLE
|
|||
{
|
||||
public const long RamSize = 4L * 1024 * 1024 * 1024;
|
||||
|
||||
public IntPtr RamPointer { get; private set; }
|
||||
public IntPtr RamPointer { get; }
|
||||
|
||||
private unsafe byte* _ramPtr;
|
||||
|
||||
public unsafe DeviceMemory()
|
||||
{
|
||||
RamPointer = Marshal.AllocHGlobal(new IntPtr(RamSize));
|
||||
RamPointer = MemoryManagement.AllocateWriteTracked(RamSize);
|
||||
|
||||
_ramPtr = (byte*)RamPointer;
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ namespace Ryujinx.HLE
|
|||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
Marshal.FreeHGlobal(RamPointer);
|
||||
MemoryManagement.Free(RamPointer);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue