aboutsummaryrefslogtreecommitdiff
path: root/src/ARMeilleure/Memory/IMemoryManager.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/ARMeilleure/Memory/IMemoryManager.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/ARMeilleure/Memory/IMemoryManager.cs')
-rw-r--r--src/ARMeilleure/Memory/IMemoryManager.cs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/ARMeilleure/Memory/IMemoryManager.cs b/src/ARMeilleure/Memory/IMemoryManager.cs
index 952cd2b4..46d44265 100644
--- a/src/ARMeilleure/Memory/IMemoryManager.cs
+++ b/src/ARMeilleure/Memory/IMemoryManager.cs
@@ -29,6 +29,17 @@ namespace ARMeilleure.Memory
T ReadTracked<T>(ulong va) where T : unmanaged;
/// <summary>
+ /// Reads data from CPU mapped memory, from guest code. (with read tracking)
+ /// </summary>
+ /// <typeparam name="T">Type of the data being read</typeparam>
+ /// <param name="va">Virtual address of the data in memory</param>
+ /// <returns>The data</returns>
+ T ReadGuest<T>(ulong va) where T : unmanaged
+ {
+ return ReadTracked<T>(va);
+ }
+
+ /// <summary>
/// Writes data to CPU mapped memory.
/// </summary>
/// <typeparam name="T">Type of the data being written</typeparam>
@@ -37,6 +48,17 @@ namespace ARMeilleure.Memory
void Write<T>(ulong va, T value) where T : unmanaged;
/// <summary>
+ /// Writes data to CPU mapped memory, from guest code.
+ /// </summary>
+ /// <typeparam name="T">Type of the data being written</typeparam>
+ /// <param name="va">Virtual address to write the data into</param>
+ /// <param name="value">Data to be written</param>
+ void WriteGuest<T>(ulong va, T value) where T : unmanaged
+ {
+ Write(va, value);
+ }
+
+ /// <summary>
/// Gets a read-only span of data from CPU mapped memory.
/// </summary>
/// <param name="va">Virtual address of the data</param>