diff options
author | bunnei <bunneidev@gmail.com> | 2022-03-26 09:46:41 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2022-03-26 09:46:41 +0100 |
commit | 0c75913bf25f89db715c20fdf65dd6d9d13f7e88 (patch) | |
tree | 76ddbc9433b62b0c66f82a4e4312dd156a772b42 /src/core/hle/kernel/k_page_table.h | |
parent | hle: kernel: svc: MapProcessMemory: Fix usage of KPageLinkedList to use physical address space. (diff) | |
download | yuzu-0c75913bf25f89db715c20fdf65dd6d9d13f7e88.tar yuzu-0c75913bf25f89db715c20fdf65dd6d9d13f7e88.tar.gz yuzu-0c75913bf25f89db715c20fdf65dd6d9d13f7e88.tar.bz2 yuzu-0c75913bf25f89db715c20fdf65dd6d9d13f7e88.tar.lz yuzu-0c75913bf25f89db715c20fdf65dd6d9d13f7e88.tar.xz yuzu-0c75913bf25f89db715c20fdf65dd6d9d13f7e88.tar.zst yuzu-0c75913bf25f89db715c20fdf65dd6d9d13f7e88.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/k_page_table.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_page_table.h b/src/core/hle/kernel/k_page_table.h index b61a39145..bfabdf38c 100644 --- a/src/core/hle/kernel/k_page_table.h +++ b/src/core/hle/kernel/k_page_table.h @@ -164,6 +164,17 @@ private: attr_mask, attr, ignore_attr); } + ResultCode LockMemoryAndOpen(KPageLinkedList* out_pg, PAddr* out_paddr, VAddr addr, size_t size, + KMemoryState state_mask, KMemoryState state, + KMemoryPermission perm_mask, KMemoryPermission perm, + KMemoryAttribute attr_mask, KMemoryAttribute attr, + KMemoryPermission new_perm, KMemoryAttribute lock_attr); + ResultCode UnlockMemory(VAddr addr, size_t size, KMemoryState state_mask, KMemoryState state, + KMemoryPermission perm_mask, KMemoryPermission perm, + KMemoryAttribute attr_mask, KMemoryAttribute attr, + KMemoryPermission new_perm, KMemoryAttribute lock_attr, + const KPageLinkedList* pg); + ResultCode MakePageGroup(KPageLinkedList& pg, VAddr addr, size_t num_pages); bool IsLockedByCurrentThread() const { @@ -176,6 +187,14 @@ private: return layout.IsHeapPhysicalAddress(cached_physical_heap_region, phys_addr); } + bool GetPhysicalAddressLocked(PAddr* out, VAddr virt_addr) const { + ASSERT(this->IsLockedByCurrentThread()); + + *out = GetPhysicalAddr(virt_addr); + + return *out != 0; + } + mutable KLightLock general_lock; mutable KLightLock map_physical_memory_lock; |