aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/Instruction/AInstEmitMemoryHelper.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-08-15 15:59:51 -0300
committerGitHub <noreply@github.com>2018-08-15 15:59:51 -0300
commitc393cdf8e3775bc95850e4d8c8e4c446b286d3b4 (patch)
tree25035a244741d2daf3f7d6be8b23153ff061ea15 /ChocolArm64/Instruction/AInstEmitMemoryHelper.cs
parent76d95dee05e3c51c18e1799f54cc407e0f633b4e (diff)
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
Diffstat (limited to 'ChocolArm64/Instruction/AInstEmitMemoryHelper.cs')
-rw-r--r--ChocolArm64/Instruction/AInstEmitMemoryHelper.cs86
1 files changed, 18 insertions, 68 deletions
diff --git a/ChocolArm64/Instruction/AInstEmitMemoryHelper.cs b/ChocolArm64/Instruction/AInstEmitMemoryHelper.cs
index df091bd5..b10551fe 100644
--- a/ChocolArm64/Instruction/AInstEmitMemoryHelper.cs
+++ b/ChocolArm64/Instruction/AInstEmitMemoryHelper.cs
@@ -45,46 +45,21 @@ namespace ChocolArm64.Instruction
{
switch (Size)
{
- case 0: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadVector8Unchecked)
- : nameof(AMemory.ReadVector8); break;
-
- case 1: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadVector16Unchecked)
- : nameof(AMemory.ReadVector16); break;
-
- case 2: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadVector32Unchecked)
- : nameof(AMemory.ReadVector32); break;
-
- case 3: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadVector64Unchecked)
- : nameof(AMemory.ReadVector64); break;
-
- case 4: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadVector128Unchecked)
- : nameof(AMemory.ReadVector128); break;
+ case 0: Name = nameof(AMemory.ReadVector8); break;
+ case 1: Name = nameof(AMemory.ReadVector16); break;
+ case 2: Name = nameof(AMemory.ReadVector32); break;
+ case 3: Name = nameof(AMemory.ReadVector64); break;
+ case 4: Name = nameof(AMemory.ReadVector128); break;
}
}
else
{
switch (Size)
{
- case 0: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadByteUnchecked)
- : nameof(AMemory.ReadByte); break;
-
- case 1: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadUInt16Unchecked)
- : nameof(AMemory.ReadUInt16); break;
-
- case 2: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadUInt32Unchecked)
- : nameof(AMemory.ReadUInt32); break;
-
- case 3: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.ReadUInt64Unchecked)
- : nameof(AMemory.ReadUInt64); break;
+ case 0: Name = nameof(AMemory.ReadByte); break;
+ case 1: Name = nameof(AMemory.ReadUInt16); break;
+ case 2: Name = nameof(AMemory.ReadUInt32); break;
+ case 3: Name = nameof(AMemory.ReadUInt64); break;
}
}
@@ -132,46 +107,21 @@ namespace ChocolArm64.Instruction
{
switch (Size)
{
- case 0: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteVector8Unchecked)
- : nameof(AMemory.WriteVector8); break;
-
- case 1: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteVector16Unchecked)
- : nameof(AMemory.WriteVector16); break;
-
- case 2: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteVector32Unchecked)
- : nameof(AMemory.WriteVector32); break;
-
- case 3: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteVector64Unchecked)
- : nameof(AMemory.WriteVector64); break;
-
- case 4: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteVector128Unchecked)
- : nameof(AMemory.WriteVector128); break;
+ case 0: Name = nameof(AMemory.WriteVector8); break;
+ case 1: Name = nameof(AMemory.WriteVector16); break;
+ case 2: Name = nameof(AMemory.WriteVector32); break;
+ case 3: Name = nameof(AMemory.WriteVector64); break;
+ case 4: Name = nameof(AMemory.WriteVector128); break;
}
}
else
{
switch (Size)
{
- case 0: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteByteUnchecked)
- : nameof(AMemory.WriteByte); break;
-
- case 1: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteUInt16Unchecked)
- : nameof(AMemory.WriteUInt16); break;
-
- case 2: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteUInt32Unchecked)
- : nameof(AMemory.WriteUInt32); break;
-
- case 3: Name = AOptimizations.DisableMemoryChecks
- ? nameof(AMemory.WriteUInt64Unchecked)
- : nameof(AMemory.WriteUInt64); break;
+ case 0: Name = nameof(AMemory.WriteByte); break;
+ case 1: Name = nameof(AMemory.WriteUInt16); break;
+ case 2: Name = nameof(AMemory.WriteUInt32); break;
+ case 3: Name = nameof(AMemory.WriteUInt64); break;
}
}