From b952a3055575224d3f873b4a24498714f8eb2820 Mon Sep 17 00:00:00 2001
From: Zach Hilman <zachhilman@gmail.com>
Date: Sat, 22 Dec 2018 21:29:52 -0500
Subject: [PATCH] vm_manager: Add support for storing and getting main code
 region Used as root for one region of cheats, set by loader

---
 src/core/hle/kernel/vm_manager.cpp | 17 +++++++++++++++++
 src/core/hle/kernel/vm_manager.h   | 11 +++++++++++
 2 files changed, 28 insertions(+)

diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp
index 10ad94aa69..161a836607 100644
--- a/src/core/hle/kernel/vm_manager.cpp
+++ b/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;
 }
diff --git a/src/core/hle/kernel/vm_manager.h b/src/core/hle/kernel/vm_manager.h
index 6091533bca..728318f4bf 100644
--- a/src/core/hle/kernel/vm_manager.h
+++ b/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;