diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 9a77e4ac0..b32071899 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -1183,9 +1183,9 @@ bool Memory::Remap(u64 guest_addr, u32 size, ArmNce& arm_nce) { void Memory::ReclaimUnusedMemory(ArmNce& arm_nce) { std::lock_guard lock(arm_nce.m_tlb_mutex); // Correct usage of lock_guard - auto& tlb_entries = arm_nce.GetTlbEntries(); + const auto& tlb_entries = arm_nce.GetTlbEntries(); - for (auto& entry : tlb_entries) { + for (const auto& entry : tlb_entries) { if (entry.valid && entry.ref_count == 0) { // Unmap the memory region UnmapRegion(*impl->current_page_table, entry.guest_addr, entry.size, false); @@ -1194,7 +1194,7 @@ void Memory::ReclaimUnusedMemory(ArmNce& arm_nce) { std::free(reinterpret_cast(entry.host_addr)); // Invalidate the TLB entry - entry.valid = false; + const_cast(entry).valid = false; LOG_INFO(Core_Memory, "Reclaimed memory for address {:X}", entry.guest_addr); } diff --git a/src/core/memory.h b/src/core/memory.h index 1fdb2ccc4..eeeee6d65 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -14,7 +14,6 @@ #include "common/typed_address.h" #include "core/guest_memory.h" #include "core/hle/result.h" -#include "core/arm/nce/arm_nce.h" // Include ArmNce header namespace Common { enum class MemoryPermission : u32; @@ -53,17 +52,6 @@ enum : u64 { DEFAULT_STACK_SIZE = 0x100000, }; -struct TlbEntry { - u64 guest_addr; - u64 host_addr; - u32 size; - bool valid; - bool writable; - u32 access_count; - std::chrono::steady_clock::time_point last_access_time; - u32 ref_count= 0; -}; - /// Central class that handles all memory operations and state. class Memory { public: @@ -514,29 +502,11 @@ public: */ bool Remap(u64 guest_addr, u32 size); - /** - * Remaps a region of the emulated process address space. - * - * @param guest_addr The address to begin remapping at. - * @param size The amount of bytes to remap. - * @param arm_nce The ArmNce instance to use for TLB entries. - * - * @returns True if remapping is successful, false otherwise. - */ - bool Remap(u64 guest_addr, u32 size, ArmNce& arm_nce); - /** * Reclaims memory from pages that are no longer used. */ void ReclaimUnusedMemory(); - /** - * Reclaims memory from pages that are no longer used. - * - * @param arm_nce The ArmNce instance to use for TLB entries. - */ - void ReclaimUnusedMemory(ArmNce& arm_nce); - private: Core::System& system; diff --git a/src/video_core/memory_manager.cpp b/src/video_core/memory_manager.cpp index 248b8bb5b..ffafc48ef 100644 --- a/src/video_core/memory_manager.cpp +++ b/src/video_core/memory_manager.cpp @@ -15,7 +15,6 @@ #include "video_core/memory_manager.h" #include "video_core/rasterizer_interface.h" #include "video_core/renderer_base.h" -#include "core/arm/nce/arm_nce.h" namespace Tegra { using Tegra::Memory::GuestMemoryFlags; @@ -786,28 +785,3 @@ u8* MemoryManager::GetSpan(const GPUVAddr src_addr, const std::size_t size) { } } // namespace Tegra - -namespace Core::Memory { - -void Memory::ReclaimUnusedMemory(ArmNce& arm_nce) { - std::lock_guard lock(arm_nce.m_tlb_mutex); // Correct usage of lock_guard - - const auto& tlb_entries = arm_nce.GetTlbEntries(); - - for (const auto& entry : tlb_entries) { - if (entry.valid && entry.ref_count == 0) { - // Unmap the memory region - UnmapRegion(*impl->current_page_table, entry.guest_addr, entry.size, false); - - // Free the memory - std::free(reinterpret_cast(entry.host_addr)); - - // Invalidate the TLB entry - const_cast(entry).valid = false; - - LOG_INFO(Core_Memory, "Reclaimed memory for address {:X}", entry.guest_addr); - } - } -} - -} // namespace Core::Memory