diff options
author | Liam <byteslice@airmail.cc> | 2023-12-13 21:32:25 +0100 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2023-12-15 05:44:33 +0100 |
commit | 8ad5f2c50648c333c3c46f89533e200a39bf6ca8 (patch) | |
tree | 00cfb8d70b13db1016006a8a9de99137a9736c08 /src/core | |
parent | Merge pull request #12354 from liamwhite/mackage-panager (diff) | |
download | yuzu-8ad5f2c50648c333c3c46f89533e200a39bf6ca8.tar yuzu-8ad5f2c50648c333c3c46f89533e200a39bf6ca8.tar.gz yuzu-8ad5f2c50648c333c3c46f89533e200a39bf6ca8.tar.bz2 yuzu-8ad5f2c50648c333c3c46f89533e200a39bf6ca8.tar.lz yuzu-8ad5f2c50648c333c3c46f89533e200a39bf6ca8.tar.xz yuzu-8ad5f2c50648c333c3c46f89533e200a39bf6ca8.tar.zst yuzu-8ad5f2c50648c333c3c46f89533e200a39bf6ca8.zip |
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/hle/kernel/k_memory_manager.cpp | 5 | ||||
-rw-r--r-- | src/core/hle/kernel/k_page_table_base.cpp | 14 |
2 files changed, 11 insertions, 8 deletions
diff --git a/src/core/hle/kernel/k_memory_manager.cpp b/src/core/hle/kernel/k_memory_manager.cpp index 0a973ec8c..d6bd27296 100644 --- a/src/core/hle/kernel/k_memory_manager.cpp +++ b/src/core/hle/kernel/k_memory_manager.cpp @@ -421,8 +421,9 @@ Result KMemoryManager::AllocateForProcess(KPageGroup* out, size_t num_pages, u32 } else { // Set all the allocated memory. for (const auto& block : *out) { - std::memset(m_system.DeviceMemory().GetPointer<void>(block.GetAddress()), fill_pattern, - block.GetSize()); + m_system.DeviceMemory().buffer.ClearBackingRegion(GetInteger(block.GetAddress()) - + Core::DramMemoryMap::Base, + block.GetSize(), fill_pattern); } } diff --git a/src/core/hle/kernel/k_page_table_base.cpp b/src/core/hle/kernel/k_page_table_base.cpp index 4c416d809..423289145 100644 --- a/src/core/hle/kernel/k_page_table_base.cpp +++ b/src/core/hle/kernel/k_page_table_base.cpp @@ -81,6 +81,11 @@ void InvalidateInstructionCache(KernelCore& kernel, AddressType addr, u64 size) } } +void ClearBackingRegion(Core::System& system, KPhysicalAddress addr, u64 size, u32 fill_value) { + system.DeviceMemory().buffer.ClearBackingRegion(GetInteger(addr) - Core::DramMemoryMap::Base, + size, fill_value); +} + template <typename AddressType> Result InvalidateDataCache(AddressType addr, u64 size) { R_SUCCEED(); @@ -1363,8 +1368,7 @@ Result KPageTableBase::MapInsecureMemory(KProcessAddress address, size_t size) { // Clear all the newly allocated pages. for (const auto& it : pg) { - std::memset(GetHeapVirtualPointer(m_kernel, it.GetAddress()), - static_cast<u32>(m_heap_fill_value), it.GetSize()); + ClearBackingRegion(m_system, it.GetAddress(), it.GetSize(), m_heap_fill_value); } // Lock the table. @@ -1570,8 +1574,7 @@ Result KPageTableBase::AllocateAndMapPagesImpl(PageLinkedList* page_list, KProce // Clear all pages. for (const auto& it : pg) { - std::memset(GetHeapVirtualPointer(m_kernel, it.GetAddress()), - static_cast<u32>(m_heap_fill_value), it.GetSize()); + ClearBackingRegion(m_system, it.GetAddress(), it.GetSize(), m_heap_fill_value); } // Map the pages. @@ -2159,8 +2162,7 @@ Result KPageTableBase::SetHeapSize(KProcessAddress* out, size_t size) { // Clear all the newly allocated pages. for (const auto& it : pg) { - std::memset(GetHeapVirtualPointer(m_kernel, it.GetAddress()), m_heap_fill_value, - it.GetSize()); + ClearBackingRegion(m_system, it.GetAddress(), it.GetSize(), m_heap_fill_value); } // Map the pages. |