Explorar o código

vm_manager: Add support for storing and getting main code region
Used as root for one region of cheats, set by loader

Zach Hilman %!s(int64=7) %!d(string=hai) anos
pai
achega
b952a30555
Modificáronse 2 ficheiros con 28 adicións e 0 borrados
  1. 17 0
      src/core/hle/kernel/vm_manager.cpp
  2. 11 0
      src/core/hle/kernel/vm_manager.h

+ 17 - 0
src/core/hle/kernel/vm_manager.cpp

@@ -786,6 +786,23 @@ u64 VMManager::GetNewMapRegionSize() const {
     return new_map_region_end - new_map_region_base;
 }
 
+void VMManager::SetMainCodeRegion(VAddr begin, VAddr end) {
+    main_code_region_base = begin;
+    main_code_region_end = end;
+}
+
+VAddr VMManager::GetMainCodeRegionBaseAddress() const {
+    return main_code_region_base;
+}
+
+VAddr VMManager::GetMainCodeRegionEndAddress() const {
+    return main_code_region_end;
+}
+
+u64 VMManager::GetMainCodeRegionSize() const {
+    return main_code_region_end - main_code_region_base;
+}
+
 VAddr VMManager::GetTLSIORegionBaseAddress() const {
     return tls_io_region_base;
 }

+ 11 - 0
src/core/hle/kernel/vm_manager.h

@@ -480,6 +480,14 @@ public:
     /// Gets the total size of the new map region in bytes.
     u64 GetNewMapRegionSize() const;
 
+    void SetMainCodeRegion(VAddr begin, VAddr end);
+
+    VAddr GetMainCodeRegionBaseAddress() const;
+
+    VAddr GetMainCodeRegionEndAddress() const;
+
+    u64 GetMainCodeRegionSize() const;
+
     /// Gets the base address of the TLS IO region.
     VAddr GetTLSIORegionBaseAddress() const;
 
@@ -598,6 +606,9 @@ private:
     VAddr new_map_region_base = 0;
     VAddr new_map_region_end = 0;
 
+    VAddr main_code_region_base = 0;
+    VAddr main_code_region_end = 0;
+
     VAddr tls_io_region_base = 0;
     VAddr tls_io_region_end = 0;