More flexible memory manager (#307)
* Keep track mapped buffers with fixed offsets * Started rewriting the memory manager * Initial support for MapPhysicalMemory and UnmapPhysicalMemory, other tweaks * MapPhysicalMemory/UnmapPhysicalMemory support, other tweaks * Rebased * Optimize the map/unmap physical memory svcs * Integrate shared font support * Fix address space reserve alignment * Some fixes related to gpu memory mapping * Some cleanup * Only try uploading const buffers that are really used * Check if memory region is contiguous * Rebased * Add missing count increment on IsRegionModified * Check for reads/writes outside of the address space, optimize translation with a tail call
This commit is contained in:
parent
76d95dee05
commit
c393cdf8e3
64 changed files with 3289 additions and 1852 deletions
|
@ -5,6 +5,7 @@ using ChocolArm64.State;
|
|||
using NUnit.Framework;
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Intrinsics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Threading;
|
||||
|
@ -19,6 +20,8 @@ namespace Ryujinx.Tests.Cpu
|
|||
|
||||
private long EntryPoint;
|
||||
|
||||
private IntPtr RamPointer;
|
||||
|
||||
private AMemory Memory;
|
||||
private AThread Thread;
|
||||
|
||||
|
@ -31,15 +34,16 @@ namespace Ryujinx.Tests.Cpu
|
|||
EntryPoint = Position;
|
||||
|
||||
ATranslator Translator = new ATranslator();
|
||||
Memory = new AMemory();
|
||||
Memory.Manager.Map(Position, Size, 2, AMemoryPerm.Read | AMemoryPerm.Write | AMemoryPerm.Execute);
|
||||
RamPointer = Marshal.AllocHGlobal(new IntPtr(Size));
|
||||
Memory = new AMemory(RamPointer);
|
||||
Memory.Map(Position, 0, Size);
|
||||
Thread = new AThread(Translator, Memory, EntryPoint);
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
Memory.Dispose();
|
||||
Marshal.FreeHGlobal(RamPointer);
|
||||
Memory = null;
|
||||
Thread = null;
|
||||
}
|
||||
|
@ -52,7 +56,7 @@ namespace Ryujinx.Tests.Cpu
|
|||
|
||||
protected void Opcode(uint Opcode)
|
||||
{
|
||||
Thread.Memory.WriteUInt32Unchecked(Position, Opcode);
|
||||
Thread.Memory.WriteUInt32(Position, Opcode);
|
||||
Position += 4;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue