aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Memory/Tracking/VirtualRegion.cs
diff options
context:
space:
mode:
authorriperiperi <rhy3756547@hotmail.com>2024-03-14 22:38:27 +0000
committerGitHub <noreply@github.com>2024-03-14 19:38:27 -0300
commitfdd3263e31f8bf352a21e05703d0a6a82c800995 (patch)
tree24859502db57a2febaa5ab4c7d968d7375156079 /src/Ryujinx.Memory/Tracking/VirtualRegion.cs
parentce607db944beb352065107830769d8570f0c245e (diff)
Separate guest/host tracking + unaligned protection (#6486)1.1.1229
* WIP: Separate guest/host tracking + unaligned protection Allow memory manager to define support for single byte guest tracking * Formatting * Improve docs * Properly handle cases where the address space bits are too low * Address feedback
Diffstat (limited to 'src/Ryujinx.Memory/Tracking/VirtualRegion.cs')
-rw-r--r--src/Ryujinx.Memory/Tracking/VirtualRegion.cs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/Ryujinx.Memory/Tracking/VirtualRegion.cs b/src/Ryujinx.Memory/Tracking/VirtualRegion.cs
index 538e94fe..bb087e9a 100644
--- a/src/Ryujinx.Memory/Tracking/VirtualRegion.cs
+++ b/src/Ryujinx.Memory/Tracking/VirtualRegion.cs
@@ -13,10 +13,14 @@ namespace Ryujinx.Memory.Tracking
private readonly MemoryTracking _tracking;
private MemoryPermission _lastPermission;
- public VirtualRegion(MemoryTracking tracking, ulong address, ulong size, MemoryPermission lastPermission = MemoryPermission.Invalid) : base(address, size)
+ public bool Guest { get; }
+
+ public VirtualRegion(MemoryTracking tracking, ulong address, ulong size, bool guest, MemoryPermission lastPermission = MemoryPermission.Invalid) : base(address, size)
{
_lastPermission = lastPermission;
_tracking = tracking;
+
+ Guest = guest;
}
/// <inheritdoc/>
@@ -103,7 +107,7 @@ namespace Ryujinx.Memory.Tracking
if (_lastPermission != permission)
{
- _tracking.ProtectVirtualRegion(this, permission);
+ _tracking.ProtectVirtualRegion(this, permission, Guest);
_lastPermission = permission;
return true;
@@ -131,7 +135,7 @@ namespace Ryujinx.Memory.Tracking
public override INonOverlappingRange Split(ulong splitAddress)
{
- VirtualRegion newRegion = new(_tracking, splitAddress, EndAddress - splitAddress, _lastPermission);
+ VirtualRegion newRegion = new(_tracking, splitAddress, EndAddress - splitAddress, Guest, _lastPermission);
Size = splitAddress - Address;
// The new region inherits all of our parents.