aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Ryujinx.Cpu/AppleHv/HvCodePatcher.cs62
-rw-r--r--src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs12
2 files changed, 0 insertions, 74 deletions
diff --git a/src/Ryujinx.Cpu/AppleHv/HvCodePatcher.cs b/src/Ryujinx.Cpu/AppleHv/HvCodePatcher.cs
deleted file mode 100644
index 876597b7..00000000
--- a/src/Ryujinx.Cpu/AppleHv/HvCodePatcher.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Runtime.Intrinsics;
-
-namespace Ryujinx.Cpu.AppleHv
-{
- static class HvCodePatcher
- {
- private const uint XMask = 0x3f808000u;
- private const uint XValue = 0x8000000u;
-
- private const uint ZrIndex = 31u;
-
- public static void RewriteUnorderedExclusiveInstructions(Span<byte> code)
- {
- Span<uint> codeUint = MemoryMarshal.Cast<byte, uint>(code);
- Span<Vector128<uint>> codeVector = MemoryMarshal.Cast<byte, Vector128<uint>>(code);
-
- Vector128<uint> mask = Vector128.Create(XMask);
- Vector128<uint> value = Vector128.Create(XValue);
-
- for (int index = 0; index < codeVector.Length; index++)
- {
- Vector128<uint> v = codeVector[index];
-
- if (Vector128.EqualsAny(Vector128.BitwiseAnd(v, mask), value))
- {
- int baseIndex = index * 4;
-
- for (int instIndex = baseIndex; instIndex < baseIndex + 4; instIndex++)
- {
- ref uint inst = ref codeUint[instIndex];
-
- if ((inst & XMask) != XValue)
- {
- continue;
- }
-
- bool isPair = (inst & (1u << 21)) != 0;
- bool isLoad = (inst & (1u << 22)) != 0;
-
- uint rt2 = (inst >> 10) & 0x1fu;
- uint rs = (inst >> 16) & 0x1fu;
-
- if (isLoad && rs != ZrIndex)
- {
- continue;
- }
-
- if (!isPair && rt2 != ZrIndex)
- {
- continue;
- }
-
- // Set the ordered flag.
- inst |= 1u << 15;
- }
- }
- }
- }
- }
-}
diff --git a/src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs b/src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs
index 947c3710..2f9743ab 100644
--- a/src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs
+++ b/src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs
@@ -724,18 +724,6 @@ namespace Ryujinx.Cpu.AppleHv
/// <inheritdoc/>
public void Reprotect(ulong va, ulong size, MemoryPermission protection)
{
- if (protection.HasFlag(MemoryPermission.Execute))
- {
- // Some applications use unordered exclusive memory access instructions
- // where it is not valid to do so, leading to memory re-ordering that
- // makes the code behave incorrectly on some CPUs.
- // To work around this, we force all such accesses to be ordered.
-
- using WritableRegion writableRegion = GetWritableRegion(va, (int)size);
-
- HvCodePatcher.RewriteUnorderedExclusiveInstructions(writableRegion.Memory.Span);
- }
-
// TODO
}