aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/Memory
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-05-07 15:53:23 -0300
committerGitHub <noreply@github.com>2018-05-07 15:53:23 -0300
commit34037701c708cb70bbf44dea71ee0912f7b4102b (patch)
treeca4cf2bde85dea48af12033b8d0446f17b611f4f /ChocolArm64/Memory
parent4419e8d6b43432eae94a3a9304f7df22b34738a8 (diff)
NvServices refactoring (#120)
* Initial implementation of NvMap/NvHostCtrl * More work on NvHostCtrl * Refactoring of nvservices, move GPU Vmm, make Vmm per-process, refactor most gpu devices, move Gpu to Core, fix CbBind * Implement GetGpuTime, support CancelSynchronization, fix issue on InsertWaitingMutex, proper double buffering support (again, not working properly for commercial games, only hb) * Try to fix perf regression reading/writing textures, moved syncpts and events to a UserCtx class, delete global state when the process exits, other minor tweaks * Remove now unused code, add comment about probably wrong result codes
Diffstat (limited to 'ChocolArm64/Memory')
-rw-r--r--ChocolArm64/Memory/AMemory.cs2
-rw-r--r--ChocolArm64/Memory/IAMemory.cs37
2 files changed, 38 insertions, 1 deletions
diff --git a/ChocolArm64/Memory/AMemory.cs b/ChocolArm64/Memory/AMemory.cs
index d7e11189..6625966f 100644
--- a/ChocolArm64/Memory/AMemory.cs
+++ b/ChocolArm64/Memory/AMemory.cs
@@ -6,7 +6,7 @@ using System.Runtime.InteropServices;
namespace ChocolArm64.Memory
{
- public unsafe class AMemory : IDisposable
+ public unsafe class AMemory : IAMemory, IDisposable
{
private const long ErgMask = (4 << AThreadState.ErgSizeLog2) - 1;
diff --git a/ChocolArm64/Memory/IAMemory.cs b/ChocolArm64/Memory/IAMemory.cs
new file mode 100644
index 00000000..5b7d17bb
--- /dev/null
+++ b/ChocolArm64/Memory/IAMemory.cs
@@ -0,0 +1,37 @@
+namespace ChocolArm64.Memory
+{
+ public interface IAMemory
+ {
+ sbyte ReadSByte(long Position);
+
+ short ReadInt16(long Position);
+
+ int ReadInt32(long Position);
+
+ long ReadInt64(long Position);
+
+ byte ReadByte(long Position);
+
+ ushort ReadUInt16(long Position);
+
+ uint ReadUInt32(long Position);
+
+ ulong ReadUInt64(long Position);
+
+ void WriteSByte(long Position, sbyte Value);
+
+ void WriteInt16(long Position, short Value);
+
+ void WriteInt32(long Position, int Value);
+
+ void WriteInt64(long Position, long Value);
+
+ void WriteByte(long Position, byte Value);
+
+ void WriteUInt16(long Position, ushort Value);
+
+ void WriteUInt32(long Position, uint Value);
+
+ void WriteUInt64(long Position, ulong Value);
+ }
+} \ No newline at end of file