summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2022-01-14 23:20:30 -0800
committerGravatar bunnei2022-01-22 01:33:26 -0800
commit0137f2e6e11056db9c4ff5af6dc988e69823949e (patch)
treeacf43fca8dbaeee5d19c8fc7071d4c13771e6c09 /src
parentcore: hle: kernel: Refactor Un/MapPhysicalMemory to remove unnecessary methods. (diff)
downloadyuzu-0137f2e6e11056db9c4ff5af6dc988e69823949e.tar.gz
yuzu-0137f2e6e11056db9c4ff5af6dc988e69823949e.tar.xz
yuzu-0137f2e6e11056db9c4ff5af6dc988e69823949e.zip
core: hle: kernel: KPageTable: SetHeapSize: Cleanup & take physical memory lock.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/k_page_table.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/core/hle/kernel/k_page_table.cpp b/src/core/hle/kernel/k_page_table.cpp
index 5ec183b9e..04276ab32 100644
--- a/src/core/hle/kernel/k_page_table.cpp
+++ b/src/core/hle/kernel/k_page_table.cpp
@@ -885,6 +885,9 @@ ResultCode KPageTable::SetMaxHeapSize(std::size_t size) {
885} 885}
886 886
887ResultCode KPageTable::SetHeapSize(VAddr* out, std::size_t size) { 887ResultCode KPageTable::SetHeapSize(VAddr* out, std::size_t size) {
888 // Lock the physical memory lock.
889 std::lock_guard phys_lk(map_physical_memory_lock);
890
888 // Try to perform a reduction in heap, instead of an extension. 891 // Try to perform a reduction in heap, instead of an extension.
889 VAddr cur_address{}; 892 VAddr cur_address{};
890 std::size_t allocation_size{}; 893 std::size_t allocation_size{};
@@ -1014,12 +1017,12 @@ ResultVal<VAddr> KPageTable::AllocateAndMapMemory(std::size_t needed_num_pages,
1014 } 1017 }
1015 1018
1016 if (is_map_only) { 1019 if (is_map_only) {
1017 CASCADE_CODE(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr)); 1020 R_TRY(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr));
1018 } else { 1021 } else {
1019 KPageLinkedList page_group; 1022 KPageLinkedList page_group;
1020 CASCADE_CODE(system.Kernel().MemoryManager().Allocate(page_group, needed_num_pages, 1023 R_TRY(system.Kernel().MemoryManager().Allocate(page_group, needed_num_pages, memory_pool,
1021 memory_pool, allocation_option)); 1024 allocation_option));
1022 CASCADE_CODE(Operate(addr, needed_num_pages, page_group, OperationType::MapGroup)); 1025 R_TRY(Operate(addr, needed_num_pages, page_group, OperationType::MapGroup));
1023 } 1026 }
1024 1027
1025 block_manager->Update(addr, needed_num_pages, state, perm); 1028 block_manager->Update(addr, needed_num_pages, state, perm);