From f77694e4f774c9391aad5344e70a7c8721cfedc6 Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Sun, 3 May 2020 19:54:50 -0300
Subject: Implement a new physical memory manager and replace DeviceMemory
 (#856)

* Implement a new physical memory manager and replace DeviceMemory

* Proper generic constraints

* Fix debug build

* Add memory tests

* New CPU memory manager and general code cleanup

* Remove host memory management from CPU project, use Ryujinx.Memory instead

* Fix tests

* Document exceptions on MemoryBlock

* Fix leak on unix memory allocation

* Proper disposal of some objects on tests

* Fix JitCache not being set as initialized

* GetRef without checks for 8-bits and 16-bits CAS

* Add MemoryBlock destructor

* Throw in separate method to improve codegen

* Address PR feedback

* QueryModified improvements

* Fix memory write tracking not marking all pages as modified in some cases

* Simplify MarkRegionAsModified

* Remove XML doc for ghost param

* Add back optimization to avoid useless buffer updates

* Add Ryujinx.Cpu project, move MemoryManager there and remove MemoryBlockWrapper

* Some nits

* Do not perform address translation when size is 0

* Address PR feedback and format NativeInterface class

* Remove ghost parameter description

* Update Ryujinx.Cpu to .NET Core 3.1

* Address PR feedback

* Fix build

* Return a well defined value for GetPhysicalAddress with invalid VA, and do not return unmapped ranges as modified

* Typo
---
 Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

(limited to 'Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs')

diff --git a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
index 7807ec5a..c7d11130 100644
--- a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
@@ -1,7 +1,6 @@
-using ARMeilleure.Memory;
 using ARMeilleure.State;
-using ARMeilleure.Translation;
 using Ryujinx.Common;
+using Ryujinx.Cpu;
 using Ryujinx.HLE.Exceptions;
 using Ryujinx.HLE.HOS.Kernel.Common;
 using Ryujinx.HLE.HOS.Kernel.Memory;
@@ -79,8 +78,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
         public bool IsPaused { get; private set; }
 
         public MemoryManager CpuMemory { get; private set; }
-
-        public Translator Translator { get; private set; }
+        public CpuContext CpuContext { get; private set; }
 
         private SvcHandler _svcHandler;
 
@@ -1109,11 +1107,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
                 default: throw new ArgumentException(nameof(addrSpaceType));
             }
 
-            bool useFlatPageTable = memRegion == MemoryRegion.Application;
-
-            CpuMemory = new MemoryManager(_system.Device.Memory.RamPointer, addrSpaceBits, useFlatPageTable);
-
-            Translator = new Translator(CpuMemory);
+            CpuMemory = new MemoryManager(_system.Device.Memory, 1UL << addrSpaceBits);
+            CpuContext = new CpuContext(CpuMemory);
 
             // TODO: This should eventually be removed.
             // The GPU shouldn't depend on the CPU memory manager at all.
-- 
cgit v1.2.3-70-g09d2