diff options
| author | 2022-06-25 23:15:31 -0500 | |
|---|---|---|
| committer | 2022-06-26 20:21:45 -0500 | |
| commit | 7b48e7b363245fd88685f70c0ea39b4374688e3c (patch) | |
| tree | 4ce180cfc395947bf2b09f039e39beea171e22ad | |
| parent | core: Replace all instances of ResultCode with Result (diff) | |
| download | yuzu-7b48e7b363245fd88685f70c0ea39b4374688e3c.tar.gz yuzu-7b48e7b363245fd88685f70c0ea39b4374688e3c.tar.xz yuzu-7b48e7b363245fd88685f70c0ea39b4374688e3c.zip | |
core: kernel: Replace instances of KPageLinkedList with KPageGroup
| -rw-r--r-- | src/core/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_code_memory.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_code_memory.h | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_memory_manager.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_memory_manager.h | 14 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_group.h (renamed from src/core/hle/kernel/k_page_linked_list.h) | 8 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_table.cpp | 48 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_table.h | 26 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_shared_memory.cpp | 3 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_shared_memory.h | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 2 |
11 files changed, 63 insertions, 64 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 670410e75..d9357138f 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -222,7 +222,7 @@ add_library(core STATIC | |||
| 222 | hle/kernel/k_page_buffer.h | 222 | hle/kernel/k_page_buffer.h |
| 223 | hle/kernel/k_page_heap.cpp | 223 | hle/kernel/k_page_heap.cpp |
| 224 | hle/kernel/k_page_heap.h | 224 | hle/kernel/k_page_heap.h |
| 225 | hle/kernel/k_page_linked_list.h | 225 | hle/kernel/k_page_group.h |
| 226 | hle/kernel/k_page_table.cpp | 226 | hle/kernel/k_page_table.cpp |
| 227 | hle/kernel/k_page_table.h | 227 | hle/kernel/k_page_table.h |
| 228 | hle/kernel/k_port.cpp | 228 | hle/kernel/k_port.cpp |
diff --git a/src/core/hle/kernel/k_code_memory.cpp b/src/core/hle/kernel/k_code_memory.cpp index 0579b8b19..da57ceb21 100644 --- a/src/core/hle/kernel/k_code_memory.cpp +++ b/src/core/hle/kernel/k_code_memory.cpp | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | #include "core/hle/kernel/k_code_memory.h" | 7 | #include "core/hle/kernel/k_code_memory.h" |
| 8 | #include "core/hle/kernel/k_light_lock.h" | 8 | #include "core/hle/kernel/k_light_lock.h" |
| 9 | #include "core/hle/kernel/k_memory_block.h" | 9 | #include "core/hle/kernel/k_memory_block.h" |
| 10 | #include "core/hle/kernel/k_page_linked_list.h" | 10 | #include "core/hle/kernel/k_page_group.h" |
| 11 | #include "core/hle/kernel/k_page_table.h" | 11 | #include "core/hle/kernel/k_page_table.h" |
| 12 | #include "core/hle/kernel/k_process.h" | 12 | #include "core/hle/kernel/k_process.h" |
| 13 | #include "core/hle/kernel/slab_helpers.h" | 13 | #include "core/hle/kernel/slab_helpers.h" |
diff --git a/src/core/hle/kernel/k_code_memory.h b/src/core/hle/kernel/k_code_memory.h index 715c645bd..2410f74a3 100644 --- a/src/core/hle/kernel/k_code_memory.h +++ b/src/core/hle/kernel/k_code_memory.h | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | #include "core/device_memory.h" | 7 | #include "core/device_memory.h" |
| 8 | #include "core/hle/kernel/k_auto_object.h" | 8 | #include "core/hle/kernel/k_auto_object.h" |
| 9 | #include "core/hle/kernel/k_light_lock.h" | 9 | #include "core/hle/kernel/k_light_lock.h" |
| 10 | #include "core/hle/kernel/k_page_linked_list.h" | 10 | #include "core/hle/kernel/k_page_group.h" |
| 11 | #include "core/hle/kernel/k_process.h" | 11 | #include "core/hle/kernel/k_process.h" |
| 12 | #include "core/hle/kernel/slab_helpers.h" | 12 | #include "core/hle/kernel/slab_helpers.h" |
| 13 | #include "core/hle/kernel/svc_types.h" | 13 | #include "core/hle/kernel/svc_types.h" |
| @@ -53,7 +53,7 @@ public: | |||
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | private: | 55 | private: |
| 56 | KPageLinkedList m_page_group{}; | 56 | KPageGroup m_page_group{}; |
| 57 | KProcess* m_owner{}; | 57 | KProcess* m_owner{}; |
| 58 | VAddr m_address{}; | 58 | VAddr m_address{}; |
| 59 | KLightLock m_lock; | 59 | KLightLock m_lock; |
diff --git a/src/core/hle/kernel/k_memory_manager.cpp b/src/core/hle/kernel/k_memory_manager.cpp index 0cdb4a050..5b0a9963a 100644 --- a/src/core/hle/kernel/k_memory_manager.cpp +++ b/src/core/hle/kernel/k_memory_manager.cpp | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #include "core/device_memory.h" | 11 | #include "core/device_memory.h" |
| 12 | #include "core/hle/kernel/initial_process.h" | 12 | #include "core/hle/kernel/initial_process.h" |
| 13 | #include "core/hle/kernel/k_memory_manager.h" | 13 | #include "core/hle/kernel/k_memory_manager.h" |
| 14 | #include "core/hle/kernel/k_page_linked_list.h" | 14 | #include "core/hle/kernel/k_page_group.h" |
| 15 | #include "core/hle/kernel/kernel.h" | 15 | #include "core/hle/kernel/kernel.h" |
| 16 | #include "core/hle/kernel/svc_results.h" | 16 | #include "core/hle/kernel/svc_results.h" |
| 17 | 17 | ||
| @@ -208,7 +208,7 @@ PAddr KMemoryManager::AllocateAndOpenContinuous(size_t num_pages, size_t align_p | |||
| 208 | return allocated_block; | 208 | return allocated_block; |
| 209 | } | 209 | } |
| 210 | 210 | ||
| 211 | Result KMemoryManager::AllocatePageGroupImpl(KPageLinkedList* out, size_t num_pages, Pool pool, | 211 | Result KMemoryManager::AllocatePageGroupImpl(KPageGroup* out, size_t num_pages, Pool pool, |
| 212 | Direction dir, bool random) { | 212 | Direction dir, bool random) { |
| 213 | // Choose a heap based on our page size request. | 213 | // Choose a heap based on our page size request. |
| 214 | const s32 heap_index = KPageHeap::GetBlockIndex(num_pages); | 214 | const s32 heap_index = KPageHeap::GetBlockIndex(num_pages); |
| @@ -257,7 +257,7 @@ Result KMemoryManager::AllocatePageGroupImpl(KPageLinkedList* out, size_t num_pa | |||
| 257 | return ResultSuccess; | 257 | return ResultSuccess; |
| 258 | } | 258 | } |
| 259 | 259 | ||
| 260 | Result KMemoryManager::AllocateAndOpen(KPageLinkedList* out, size_t num_pages, u32 option) { | 260 | Result KMemoryManager::AllocateAndOpen(KPageGroup* out, size_t num_pages, u32 option) { |
| 261 | ASSERT(out != nullptr); | 261 | ASSERT(out != nullptr); |
| 262 | ASSERT(out->GetNumPages() == 0); | 262 | ASSERT(out->GetNumPages() == 0); |
| 263 | 263 | ||
| @@ -293,7 +293,7 @@ Result KMemoryManager::AllocateAndOpen(KPageLinkedList* out, size_t num_pages, u | |||
| 293 | return ResultSuccess; | 293 | return ResultSuccess; |
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | Result KMemoryManager::AllocateAndOpenForProcess(KPageLinkedList* out, size_t num_pages, u32 option, | 296 | Result KMemoryManager::AllocateAndOpenForProcess(KPageGroup* out, size_t num_pages, u32 option, |
| 297 | u64 process_id, u8 fill_pattern) { | 297 | u64 process_id, u8 fill_pattern) { |
| 298 | ASSERT(out != nullptr); | 298 | ASSERT(out != nullptr); |
| 299 | ASSERT(out->GetNumPages() == 0); | 299 | ASSERT(out->GetNumPages() == 0); |
| @@ -370,12 +370,12 @@ void KMemoryManager::Close(PAddr address, size_t num_pages) { | |||
| 370 | } | 370 | } |
| 371 | } | 371 | } |
| 372 | 372 | ||
| 373 | void KMemoryManager::Close(const KPageLinkedList& pg) { | 373 | void KMemoryManager::Close(const KPageGroup& pg) { |
| 374 | for (const auto& node : pg.Nodes()) { | 374 | for (const auto& node : pg.Nodes()) { |
| 375 | Close(node.GetAddress(), node.GetNumPages()); | 375 | Close(node.GetAddress(), node.GetNumPages()); |
| 376 | } | 376 | } |
| 377 | } | 377 | } |
| 378 | void KMemoryManager::Open(const KPageLinkedList& pg) { | 378 | void KMemoryManager::Open(const KPageGroup& pg) { |
| 379 | for (const auto& node : pg.Nodes()) { | 379 | for (const auto& node : pg.Nodes()) { |
| 380 | Open(node.GetAddress(), node.GetNumPages()); | 380 | Open(node.GetAddress(), node.GetNumPages()); |
| 381 | } | 381 | } |
diff --git a/src/core/hle/kernel/k_memory_manager.h b/src/core/hle/kernel/k_memory_manager.h index 1ebda7a4b..dcb9b6348 100644 --- a/src/core/hle/kernel/k_memory_manager.h +++ b/src/core/hle/kernel/k_memory_manager.h | |||
| @@ -19,7 +19,7 @@ class System; | |||
| 19 | 19 | ||
| 20 | namespace Kernel { | 20 | namespace Kernel { |
| 21 | 21 | ||
| 22 | class KPageLinkedList; | 22 | class KPageGroup; |
| 23 | 23 | ||
| 24 | class KMemoryManager final { | 24 | class KMemoryManager final { |
| 25 | public: | 25 | public: |
| @@ -65,17 +65,17 @@ public: | |||
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | PAddr AllocateAndOpenContinuous(size_t num_pages, size_t align_pages, u32 option); | 67 | PAddr AllocateAndOpenContinuous(size_t num_pages, size_t align_pages, u32 option); |
| 68 | Result AllocateAndOpen(KPageLinkedList* out, size_t num_pages, u32 option); | 68 | Result AllocateAndOpen(KPageGroup* out, size_t num_pages, u32 option); |
| 69 | Result AllocateAndOpenForProcess(KPageLinkedList* out, size_t num_pages, u32 option, | 69 | Result AllocateAndOpenForProcess(KPageGroup* out, size_t num_pages, u32 option, u64 process_id, |
| 70 | u64 process_id, u8 fill_pattern); | 70 | u8 fill_pattern); |
| 71 | 71 | ||
| 72 | static constexpr size_t MaxManagerCount = 10; | 72 | static constexpr size_t MaxManagerCount = 10; |
| 73 | 73 | ||
| 74 | void Close(PAddr address, size_t num_pages); | 74 | void Close(PAddr address, size_t num_pages); |
| 75 | void Close(const KPageLinkedList& pg); | 75 | void Close(const KPageGroup& pg); |
| 76 | 76 | ||
| 77 | void Open(PAddr address, size_t num_pages); | 77 | void Open(PAddr address, size_t num_pages); |
| 78 | void Open(const KPageLinkedList& pg); | 78 | void Open(const KPageGroup& pg); |
| 79 | 79 | ||
| 80 | public: | 80 | public: |
| 81 | static size_t CalculateManagementOverheadSize(size_t region_size) { | 81 | static size_t CalculateManagementOverheadSize(size_t region_size) { |
| @@ -262,7 +262,7 @@ private: | |||
| 262 | } | 262 | } |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | Result AllocatePageGroupImpl(KPageLinkedList* out, size_t num_pages, Pool pool, Direction dir, | 265 | Result AllocatePageGroupImpl(KPageGroup* out, size_t num_pages, Pool pool, Direction dir, |
| 266 | bool random); | 266 | bool random); |
| 267 | 267 | ||
| 268 | private: | 268 | private: |
diff --git a/src/core/hle/kernel/k_page_linked_list.h b/src/core/hle/kernel/k_page_group.h index fc2ef9698..968753992 100644 --- a/src/core/hle/kernel/k_page_linked_list.h +++ b/src/core/hle/kernel/k_page_group.h | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | namespace Kernel { | 13 | namespace Kernel { |
| 14 | 14 | ||
| 15 | class KPageLinkedList final { | 15 | class KPageGroup final { |
| 16 | public: | 16 | public: |
| 17 | class Node final { | 17 | class Node final { |
| 18 | public: | 18 | public: |
| @@ -36,8 +36,8 @@ public: | |||
| 36 | }; | 36 | }; |
| 37 | 37 | ||
| 38 | public: | 38 | public: |
| 39 | KPageLinkedList() = default; | 39 | KPageGroup() = default; |
| 40 | KPageLinkedList(u64 address, u64 num_pages) { | 40 | KPageGroup(u64 address, u64 num_pages) { |
| 41 | ASSERT(AddBlock(address, num_pages).IsSuccess()); | 41 | ASSERT(AddBlock(address, num_pages).IsSuccess()); |
| 42 | } | 42 | } |
| 43 | 43 | ||
| @@ -57,7 +57,7 @@ public: | |||
| 57 | return num_pages; | 57 | return num_pages; |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | bool IsEqual(KPageLinkedList& other) const { | 60 | bool IsEqual(KPageGroup& other) const { |
| 61 | auto this_node = nodes.begin(); | 61 | auto this_node = nodes.begin(); |
| 62 | auto other_node = other.nodes.begin(); | 62 | auto other_node = other.nodes.begin(); |
| 63 | while (this_node != nodes.end() && other_node != other.nodes.end()) { | 63 | while (this_node != nodes.end() && other_node != other.nodes.end()) { |
diff --git a/src/core/hle/kernel/k_page_table.cpp b/src/core/hle/kernel/k_page_table.cpp index 909162716..d975de844 100644 --- a/src/core/hle/kernel/k_page_table.cpp +++ b/src/core/hle/kernel/k_page_table.cpp | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #include "core/hle/kernel/k_address_space_info.h" | 9 | #include "core/hle/kernel/k_address_space_info.h" |
| 10 | #include "core/hle/kernel/k_memory_block.h" | 10 | #include "core/hle/kernel/k_memory_block.h" |
| 11 | #include "core/hle/kernel/k_memory_block_manager.h" | 11 | #include "core/hle/kernel/k_memory_block_manager.h" |
| 12 | #include "core/hle/kernel/k_page_linked_list.h" | 12 | #include "core/hle/kernel/k_page_group.h" |
| 13 | #include "core/hle/kernel/k_page_table.h" | 13 | #include "core/hle/kernel/k_page_table.h" |
| 14 | #include "core/hle/kernel/k_process.h" | 14 | #include "core/hle/kernel/k_process.h" |
| 15 | #include "core/hle/kernel/k_resource_limit.h" | 15 | #include "core/hle/kernel/k_resource_limit.h" |
| @@ -271,7 +271,7 @@ Result KPageTable::MapProcessCode(VAddr addr, std::size_t num_pages, KMemoryStat | |||
| 271 | R_TRY(this->CheckMemoryState(addr, size, KMemoryState::All, KMemoryState::Free, | 271 | R_TRY(this->CheckMemoryState(addr, size, KMemoryState::All, KMemoryState::Free, |
| 272 | KMemoryPermission::None, KMemoryPermission::None, | 272 | KMemoryPermission::None, KMemoryPermission::None, |
| 273 | KMemoryAttribute::None, KMemoryAttribute::None)); | 273 | KMemoryAttribute::None, KMemoryAttribute::None)); |
| 274 | KPageLinkedList pg; | 274 | KPageGroup pg; |
| 275 | R_TRY(system.Kernel().MemoryManager().AllocateAndOpen( | 275 | R_TRY(system.Kernel().MemoryManager().AllocateAndOpen( |
| 276 | &pg, num_pages, | 276 | &pg, num_pages, |
| 277 | KMemoryManager::EncodeOption(KMemoryManager::Pool::Application, allocation_option))); | 277 | KMemoryManager::EncodeOption(KMemoryManager::Pool::Application, allocation_option))); |
| @@ -313,7 +313,7 @@ Result KPageTable::MapCodeMemory(VAddr dst_address, VAddr src_address, std::size | |||
| 313 | const std::size_t num_pages = size / PageSize; | 313 | const std::size_t num_pages = size / PageSize; |
| 314 | 314 | ||
| 315 | // Create page groups for the memory being mapped. | 315 | // Create page groups for the memory being mapped. |
| 316 | KPageLinkedList pg; | 316 | KPageGroup pg; |
| 317 | AddRegionToPages(src_address, num_pages, pg); | 317 | AddRegionToPages(src_address, num_pages, pg); |
| 318 | 318 | ||
| 319 | // Reprotect the source as kernel-read/not mapped. | 319 | // Reprotect the source as kernel-read/not mapped. |
| @@ -489,7 +489,7 @@ VAddr KPageTable::FindFreeArea(VAddr region_start, std::size_t region_num_pages, | |||
| 489 | return address; | 489 | return address; |
| 490 | } | 490 | } |
| 491 | 491 | ||
| 492 | Result KPageTable::MakePageGroup(KPageLinkedList& pg, VAddr addr, size_t num_pages) { | 492 | Result KPageTable::MakePageGroup(KPageGroup& pg, VAddr addr, size_t num_pages) { |
| 493 | ASSERT(this->IsLockedByCurrentThread()); | 493 | ASSERT(this->IsLockedByCurrentThread()); |
| 494 | 494 | ||
| 495 | const size_t size = num_pages * PageSize; | 495 | const size_t size = num_pages * PageSize; |
| @@ -541,7 +541,7 @@ Result KPageTable::MakePageGroup(KPageLinkedList& pg, VAddr addr, size_t num_pag | |||
| 541 | return ResultSuccess; | 541 | return ResultSuccess; |
| 542 | } | 542 | } |
| 543 | 543 | ||
| 544 | bool KPageTable::IsValidPageGroup(const KPageLinkedList& pg_ll, VAddr addr, size_t num_pages) { | 544 | bool KPageTable::IsValidPageGroup(const KPageGroup& pg_ll, VAddr addr, size_t num_pages) { |
| 545 | ASSERT(this->IsLockedByCurrentThread()); | 545 | ASSERT(this->IsLockedByCurrentThread()); |
| 546 | 546 | ||
| 547 | const size_t size = num_pages * PageSize; | 547 | const size_t size = num_pages * PageSize; |
| @@ -721,7 +721,7 @@ Result KPageTable::MapPhysicalMemory(VAddr address, std::size_t size) { | |||
| 721 | R_UNLESS(memory_reservation.Succeeded(), ResultLimitReached); | 721 | R_UNLESS(memory_reservation.Succeeded(), ResultLimitReached); |
| 722 | 722 | ||
| 723 | // Allocate pages for the new memory. | 723 | // Allocate pages for the new memory. |
| 724 | KPageLinkedList pg; | 724 | KPageGroup pg; |
| 725 | R_TRY(system.Kernel().MemoryManager().AllocateAndOpenForProcess( | 725 | R_TRY(system.Kernel().MemoryManager().AllocateAndOpenForProcess( |
| 726 | &pg, (size - mapped_size) / PageSize, | 726 | &pg, (size - mapped_size) / PageSize, |
| 727 | KMemoryManager::EncodeOption(memory_pool, allocation_option), 0, 0)); | 727 | KMemoryManager::EncodeOption(memory_pool, allocation_option), 0, 0)); |
| @@ -972,7 +972,7 @@ Result KPageTable::UnmapPhysicalMemory(VAddr address, std::size_t size) { | |||
| 972 | } | 972 | } |
| 973 | 973 | ||
| 974 | // Make a page group for the unmap region. | 974 | // Make a page group for the unmap region. |
| 975 | KPageLinkedList pg; | 975 | KPageGroup pg; |
| 976 | { | 976 | { |
| 977 | auto& impl = this->PageTableImpl(); | 977 | auto& impl = this->PageTableImpl(); |
| 978 | 978 | ||
| @@ -1147,7 +1147,7 @@ Result KPageTable::MapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size) { | |||
| 1147 | return ResultInvalidCurrentMemory; | 1147 | return ResultInvalidCurrentMemory; |
| 1148 | } | 1148 | } |
| 1149 | 1149 | ||
| 1150 | KPageLinkedList page_linked_list; | 1150 | KPageGroup page_linked_list; |
| 1151 | const std::size_t num_pages{size / PageSize}; | 1151 | const std::size_t num_pages{size / PageSize}; |
| 1152 | 1152 | ||
| 1153 | AddRegionToPages(src_addr, num_pages, page_linked_list); | 1153 | AddRegionToPages(src_addr, num_pages, page_linked_list); |
| @@ -1188,8 +1188,8 @@ Result KPageTable::UnmapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size) | |||
| 1188 | KMemoryPermission::None, KMemoryAttribute::Mask, | 1188 | KMemoryPermission::None, KMemoryAttribute::Mask, |
| 1189 | KMemoryAttribute::None, KMemoryAttribute::IpcAndDeviceMapped)); | 1189 | KMemoryAttribute::None, KMemoryAttribute::IpcAndDeviceMapped)); |
| 1190 | 1190 | ||
| 1191 | KPageLinkedList src_pages; | 1191 | KPageGroup src_pages; |
| 1192 | KPageLinkedList dst_pages; | 1192 | KPageGroup dst_pages; |
| 1193 | const std::size_t num_pages{size / PageSize}; | 1193 | const std::size_t num_pages{size / PageSize}; |
| 1194 | 1194 | ||
| 1195 | AddRegionToPages(src_addr, num_pages, src_pages); | 1195 | AddRegionToPages(src_addr, num_pages, src_pages); |
| @@ -1215,7 +1215,7 @@ Result KPageTable::UnmapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size) | |||
| 1215 | return ResultSuccess; | 1215 | return ResultSuccess; |
| 1216 | } | 1216 | } |
| 1217 | 1217 | ||
| 1218 | Result KPageTable::MapPages(VAddr addr, const KPageLinkedList& page_linked_list, | 1218 | Result KPageTable::MapPages(VAddr addr, const KPageGroup& page_linked_list, |
| 1219 | KMemoryPermission perm) { | 1219 | KMemoryPermission perm) { |
| 1220 | ASSERT(this->IsLockedByCurrentThread()); | 1220 | ASSERT(this->IsLockedByCurrentThread()); |
| 1221 | 1221 | ||
| @@ -1239,7 +1239,7 @@ Result KPageTable::MapPages(VAddr addr, const KPageLinkedList& page_linked_list, | |||
| 1239 | return ResultSuccess; | 1239 | return ResultSuccess; |
| 1240 | } | 1240 | } |
| 1241 | 1241 | ||
| 1242 | Result KPageTable::MapPages(VAddr address, KPageLinkedList& page_linked_list, KMemoryState state, | 1242 | Result KPageTable::MapPages(VAddr address, KPageGroup& page_linked_list, KMemoryState state, |
| 1243 | KMemoryPermission perm) { | 1243 | KMemoryPermission perm) { |
| 1244 | // Check that the map is in range. | 1244 | // Check that the map is in range. |
| 1245 | const std::size_t num_pages{page_linked_list.GetNumPages()}; | 1245 | const std::size_t num_pages{page_linked_list.GetNumPages()}; |
| @@ -1303,7 +1303,7 @@ Result KPageTable::MapPages(VAddr* out_addr, std::size_t num_pages, std::size_t | |||
| 1303 | return ResultSuccess; | 1303 | return ResultSuccess; |
| 1304 | } | 1304 | } |
| 1305 | 1305 | ||
| 1306 | Result KPageTable::UnmapPages(VAddr addr, const KPageLinkedList& page_linked_list) { | 1306 | Result KPageTable::UnmapPages(VAddr addr, const KPageGroup& page_linked_list) { |
| 1307 | ASSERT(this->IsLockedByCurrentThread()); | 1307 | ASSERT(this->IsLockedByCurrentThread()); |
| 1308 | 1308 | ||
| 1309 | VAddr cur_addr{addr}; | 1309 | VAddr cur_addr{addr}; |
| @@ -1321,7 +1321,7 @@ Result KPageTable::UnmapPages(VAddr addr, const KPageLinkedList& page_linked_lis | |||
| 1321 | return ResultSuccess; | 1321 | return ResultSuccess; |
| 1322 | } | 1322 | } |
| 1323 | 1323 | ||
| 1324 | Result KPageTable::UnmapPages(VAddr addr, KPageLinkedList& page_linked_list, KMemoryState state) { | 1324 | Result KPageTable::UnmapPages(VAddr addr, KPageGroup& page_linked_list, KMemoryState state) { |
| 1325 | // Check that the unmap is in range. | 1325 | // Check that the unmap is in range. |
| 1326 | const std::size_t num_pages{page_linked_list.GetNumPages()}; | 1326 | const std::size_t num_pages{page_linked_list.GetNumPages()}; |
| 1327 | const std::size_t size{num_pages * PageSize}; | 1327 | const std::size_t size{num_pages * PageSize}; |
| @@ -1368,7 +1368,7 @@ Result KPageTable::UnmapPages(VAddr address, std::size_t num_pages, KMemoryState | |||
| 1368 | return ResultSuccess; | 1368 | return ResultSuccess; |
| 1369 | } | 1369 | } |
| 1370 | 1370 | ||
| 1371 | Result KPageTable::MakeAndOpenPageGroup(KPageLinkedList* out, VAddr address, size_t num_pages, | 1371 | Result KPageTable::MakeAndOpenPageGroup(KPageGroup* out, VAddr address, size_t num_pages, |
| 1372 | KMemoryState state_mask, KMemoryState state, | 1372 | KMemoryState state_mask, KMemoryState state, |
| 1373 | KMemoryPermission perm_mask, KMemoryPermission perm, | 1373 | KMemoryPermission perm_mask, KMemoryPermission perm, |
| 1374 | KMemoryAttribute attr_mask, KMemoryAttribute attr) { | 1374 | KMemoryAttribute attr_mask, KMemoryAttribute attr) { |
| @@ -1641,7 +1641,7 @@ Result KPageTable::SetHeapSize(VAddr* out, std::size_t size) { | |||
| 1641 | R_UNLESS(memory_reservation.Succeeded(), ResultLimitReached); | 1641 | R_UNLESS(memory_reservation.Succeeded(), ResultLimitReached); |
| 1642 | 1642 | ||
| 1643 | // Allocate pages for the heap extension. | 1643 | // Allocate pages for the heap extension. |
| 1644 | KPageLinkedList pg; | 1644 | KPageGroup pg; |
| 1645 | R_TRY(system.Kernel().MemoryManager().AllocateAndOpen( | 1645 | R_TRY(system.Kernel().MemoryManager().AllocateAndOpen( |
| 1646 | &pg, allocation_size / PageSize, | 1646 | &pg, allocation_size / PageSize, |
| 1647 | KMemoryManager::EncodeOption(memory_pool, allocation_option))); | 1647 | KMemoryManager::EncodeOption(memory_pool, allocation_option))); |
| @@ -1716,7 +1716,7 @@ ResultVal<VAddr> KPageTable::AllocateAndMapMemory(std::size_t needed_num_pages, | |||
| 1716 | if (is_map_only) { | 1716 | if (is_map_only) { |
| 1717 | R_TRY(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr)); | 1717 | R_TRY(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr)); |
| 1718 | } else { | 1718 | } else { |
| 1719 | KPageLinkedList page_group; | 1719 | KPageGroup page_group; |
| 1720 | R_TRY(system.Kernel().MemoryManager().AllocateAndOpenForProcess( | 1720 | R_TRY(system.Kernel().MemoryManager().AllocateAndOpenForProcess( |
| 1721 | &page_group, needed_num_pages, | 1721 | &page_group, needed_num_pages, |
| 1722 | KMemoryManager::EncodeOption(memory_pool, allocation_option), 0, 0)); | 1722 | KMemoryManager::EncodeOption(memory_pool, allocation_option), 0, 0)); |
| @@ -1774,7 +1774,7 @@ Result KPageTable::UnlockForDeviceAddressSpace(VAddr addr, std::size_t size) { | |||
| 1774 | return ResultSuccess; | 1774 | return ResultSuccess; |
| 1775 | } | 1775 | } |
| 1776 | 1776 | ||
| 1777 | Result KPageTable::LockForCodeMemory(KPageLinkedList* out, VAddr addr, std::size_t size) { | 1777 | Result KPageTable::LockForCodeMemory(KPageGroup* out, VAddr addr, std::size_t size) { |
| 1778 | return this->LockMemoryAndOpen( | 1778 | return this->LockMemoryAndOpen( |
| 1779 | out, nullptr, addr, size, KMemoryState::FlagCanCodeMemory, KMemoryState::FlagCanCodeMemory, | 1779 | out, nullptr, addr, size, KMemoryState::FlagCanCodeMemory, KMemoryState::FlagCanCodeMemory, |
| 1780 | KMemoryPermission::All, KMemoryPermission::UserReadWrite, KMemoryAttribute::All, | 1780 | KMemoryPermission::All, KMemoryPermission::UserReadWrite, KMemoryAttribute::All, |
| @@ -1784,7 +1784,7 @@ Result KPageTable::LockForCodeMemory(KPageLinkedList* out, VAddr addr, std::size | |||
| 1784 | KMemoryAttribute::Locked); | 1784 | KMemoryAttribute::Locked); |
| 1785 | } | 1785 | } |
| 1786 | 1786 | ||
| 1787 | Result KPageTable::UnlockForCodeMemory(VAddr addr, std::size_t size, const KPageLinkedList& pg) { | 1787 | Result KPageTable::UnlockForCodeMemory(VAddr addr, std::size_t size, const KPageGroup& pg) { |
| 1788 | return this->UnlockMemory( | 1788 | return this->UnlockMemory( |
| 1789 | addr, size, KMemoryState::FlagCanCodeMemory, KMemoryState::FlagCanCodeMemory, | 1789 | addr, size, KMemoryState::FlagCanCodeMemory, KMemoryState::FlagCanCodeMemory, |
| 1790 | KMemoryPermission::None, KMemoryPermission::None, KMemoryAttribute::All, | 1790 | KMemoryPermission::None, KMemoryPermission::None, KMemoryAttribute::All, |
| @@ -1816,7 +1816,7 @@ bool KPageTable::IsRegionContiguous(VAddr addr, u64 size) const { | |||
| 1816 | } | 1816 | } |
| 1817 | 1817 | ||
| 1818 | void KPageTable::AddRegionToPages(VAddr start, std::size_t num_pages, | 1818 | void KPageTable::AddRegionToPages(VAddr start, std::size_t num_pages, |
| 1819 | KPageLinkedList& page_linked_list) { | 1819 | KPageGroup& page_linked_list) { |
| 1820 | VAddr addr{start}; | 1820 | VAddr addr{start}; |
| 1821 | while (addr < start + (num_pages * PageSize)) { | 1821 | while (addr < start + (num_pages * PageSize)) { |
| 1822 | const PAddr paddr{GetPhysicalAddr(addr)}; | 1822 | const PAddr paddr{GetPhysicalAddr(addr)}; |
| @@ -1835,7 +1835,7 @@ VAddr KPageTable::AllocateVirtualMemory(VAddr start, std::size_t region_num_page | |||
| 1835 | IsKernel() ? 1 : 4); | 1835 | IsKernel() ? 1 : 4); |
| 1836 | } | 1836 | } |
| 1837 | 1837 | ||
| 1838 | Result KPageTable::Operate(VAddr addr, std::size_t num_pages, const KPageLinkedList& page_group, | 1838 | Result KPageTable::Operate(VAddr addr, std::size_t num_pages, const KPageGroup& page_group, |
| 1839 | OperationType operation) { | 1839 | OperationType operation) { |
| 1840 | ASSERT(this->IsLockedByCurrentThread()); | 1840 | ASSERT(this->IsLockedByCurrentThread()); |
| 1841 | 1841 | ||
| @@ -2119,8 +2119,8 @@ Result KPageTable::CheckMemoryState(KMemoryState* out_state, KMemoryPermission* | |||
| 2119 | return ResultSuccess; | 2119 | return ResultSuccess; |
| 2120 | } | 2120 | } |
| 2121 | 2121 | ||
| 2122 | Result KPageTable::LockMemoryAndOpen(KPageLinkedList* out_pg, PAddr* out_paddr, VAddr addr, | 2122 | Result KPageTable::LockMemoryAndOpen(KPageGroup* out_pg, PAddr* out_paddr, VAddr addr, size_t size, |
| 2123 | size_t size, KMemoryState state_mask, KMemoryState state, | 2123 | KMemoryState state_mask, KMemoryState state, |
| 2124 | KMemoryPermission perm_mask, KMemoryPermission perm, | 2124 | KMemoryPermission perm_mask, KMemoryPermission perm, |
| 2125 | KMemoryAttribute attr_mask, KMemoryAttribute attr, | 2125 | KMemoryAttribute attr_mask, KMemoryAttribute attr, |
| 2126 | KMemoryPermission new_perm, KMemoryAttribute lock_attr) { | 2126 | KMemoryPermission new_perm, KMemoryAttribute lock_attr) { |
| @@ -2181,7 +2181,7 @@ Result KPageTable::UnlockMemory(VAddr addr, size_t size, KMemoryState state_mask | |||
| 2181 | KMemoryState state, KMemoryPermission perm_mask, | 2181 | KMemoryState state, KMemoryPermission perm_mask, |
| 2182 | KMemoryPermission perm, KMemoryAttribute attr_mask, | 2182 | KMemoryPermission perm, KMemoryAttribute attr_mask, |
| 2183 | KMemoryAttribute attr, KMemoryPermission new_perm, | 2183 | KMemoryAttribute attr, KMemoryPermission new_perm, |
| 2184 | KMemoryAttribute lock_attr, const KPageLinkedList* pg) { | 2184 | KMemoryAttribute lock_attr, const KPageGroup* pg) { |
| 2185 | // Validate basic preconditions. | 2185 | // Validate basic preconditions. |
| 2186 | ASSERT((attr_mask & lock_attr) == lock_attr); | 2186 | ASSERT((attr_mask & lock_attr) == lock_attr); |
| 2187 | ASSERT((attr & lock_attr) == lock_attr); | 2187 | ASSERT((attr & lock_attr) == lock_attr); |
diff --git a/src/core/hle/kernel/k_page_table.h b/src/core/hle/kernel/k_page_table.h index 64e770f8f..25774f232 100644 --- a/src/core/hle/kernel/k_page_table.h +++ b/src/core/hle/kernel/k_page_table.h | |||
| @@ -46,7 +46,7 @@ public: | |||
| 46 | Result UnmapPhysicalMemory(VAddr addr, std::size_t size); | 46 | Result UnmapPhysicalMemory(VAddr addr, std::size_t size); |
| 47 | Result MapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size); | 47 | Result MapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size); |
| 48 | Result UnmapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size); | 48 | Result UnmapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size); |
| 49 | Result MapPages(VAddr addr, KPageLinkedList& page_linked_list, KMemoryState state, | 49 | Result MapPages(VAddr addr, KPageGroup& page_linked_list, KMemoryState state, |
| 50 | KMemoryPermission perm); | 50 | KMemoryPermission perm); |
| 51 | Result MapPages(VAddr* out_addr, std::size_t num_pages, std::size_t alignment, PAddr phys_addr, | 51 | Result MapPages(VAddr* out_addr, std::size_t num_pages, std::size_t alignment, PAddr phys_addr, |
| 52 | KMemoryState state, KMemoryPermission perm) { | 52 | KMemoryState state, KMemoryPermission perm) { |
| @@ -54,7 +54,7 @@ public: | |||
| 54 | this->GetRegionAddress(state), this->GetRegionSize(state) / PageSize, | 54 | this->GetRegionAddress(state), this->GetRegionSize(state) / PageSize, |
| 55 | state, perm); | 55 | state, perm); |
| 56 | } | 56 | } |
| 57 | Result UnmapPages(VAddr addr, KPageLinkedList& page_linked_list, KMemoryState state); | 57 | Result UnmapPages(VAddr addr, KPageGroup& page_linked_list, KMemoryState state); |
| 58 | Result UnmapPages(VAddr address, std::size_t num_pages, KMemoryState state); | 58 | Result UnmapPages(VAddr address, std::size_t num_pages, KMemoryState state); |
| 59 | Result SetProcessMemoryPermission(VAddr addr, std::size_t size, Svc::MemoryPermission svc_perm); | 59 | Result SetProcessMemoryPermission(VAddr addr, std::size_t size, Svc::MemoryPermission svc_perm); |
| 60 | KMemoryInfo QueryInfo(VAddr addr); | 60 | KMemoryInfo QueryInfo(VAddr addr); |
| @@ -70,9 +70,9 @@ public: | |||
| 70 | KMemoryPermission perm, PAddr map_addr = 0); | 70 | KMemoryPermission perm, PAddr map_addr = 0); |
| 71 | Result LockForDeviceAddressSpace(VAddr addr, std::size_t size); | 71 | Result LockForDeviceAddressSpace(VAddr addr, std::size_t size); |
| 72 | Result UnlockForDeviceAddressSpace(VAddr addr, std::size_t size); | 72 | Result UnlockForDeviceAddressSpace(VAddr addr, std::size_t size); |
| 73 | Result LockForCodeMemory(KPageLinkedList* out, VAddr addr, std::size_t size); | 73 | Result LockForCodeMemory(KPageGroup* out, VAddr addr, std::size_t size); |
| 74 | Result UnlockForCodeMemory(VAddr addr, std::size_t size, const KPageLinkedList& pg); | 74 | Result UnlockForCodeMemory(VAddr addr, std::size_t size, const KPageGroup& pg); |
| 75 | Result MakeAndOpenPageGroup(KPageLinkedList* out, VAddr address, size_t num_pages, | 75 | Result MakeAndOpenPageGroup(KPageGroup* out, VAddr address, size_t num_pages, |
| 76 | KMemoryState state_mask, KMemoryState state, | 76 | KMemoryState state_mask, KMemoryState state, |
| 77 | KMemoryPermission perm_mask, KMemoryPermission perm, | 77 | KMemoryPermission perm_mask, KMemoryPermission perm, |
| 78 | KMemoryAttribute attr_mask, KMemoryAttribute attr); | 78 | KMemoryAttribute attr_mask, KMemoryAttribute attr); |
| @@ -101,18 +101,18 @@ private: | |||
| 101 | KMemoryAttribute::DeviceShared; | 101 | KMemoryAttribute::DeviceShared; |
| 102 | 102 | ||
| 103 | Result InitializeMemoryLayout(VAddr start, VAddr end); | 103 | Result InitializeMemoryLayout(VAddr start, VAddr end); |
| 104 | Result MapPages(VAddr addr, const KPageLinkedList& page_linked_list, KMemoryPermission perm); | 104 | Result MapPages(VAddr addr, const KPageGroup& page_linked_list, KMemoryPermission perm); |
| 105 | Result MapPages(VAddr* out_addr, std::size_t num_pages, std::size_t alignment, PAddr phys_addr, | 105 | Result MapPages(VAddr* out_addr, std::size_t num_pages, std::size_t alignment, PAddr phys_addr, |
| 106 | bool is_pa_valid, VAddr region_start, std::size_t region_num_pages, | 106 | bool is_pa_valid, VAddr region_start, std::size_t region_num_pages, |
| 107 | KMemoryState state, KMemoryPermission perm); | 107 | KMemoryState state, KMemoryPermission perm); |
| 108 | Result UnmapPages(VAddr addr, const KPageLinkedList& page_linked_list); | 108 | Result UnmapPages(VAddr addr, const KPageGroup& page_linked_list); |
| 109 | bool IsRegionMapped(VAddr address, u64 size); | 109 | bool IsRegionMapped(VAddr address, u64 size); |
| 110 | bool IsRegionContiguous(VAddr addr, u64 size) const; | 110 | bool IsRegionContiguous(VAddr addr, u64 size) const; |
| 111 | void AddRegionToPages(VAddr start, std::size_t num_pages, KPageLinkedList& page_linked_list); | 111 | void AddRegionToPages(VAddr start, std::size_t num_pages, KPageGroup& page_linked_list); |
| 112 | KMemoryInfo QueryInfoImpl(VAddr addr); | 112 | KMemoryInfo QueryInfoImpl(VAddr addr); |
| 113 | VAddr AllocateVirtualMemory(VAddr start, std::size_t region_num_pages, u64 needed_num_pages, | 113 | VAddr AllocateVirtualMemory(VAddr start, std::size_t region_num_pages, u64 needed_num_pages, |
| 114 | std::size_t align); | 114 | std::size_t align); |
| 115 | Result Operate(VAddr addr, std::size_t num_pages, const KPageLinkedList& page_group, | 115 | Result Operate(VAddr addr, std::size_t num_pages, const KPageGroup& page_group, |
| 116 | OperationType operation); | 116 | OperationType operation); |
| 117 | Result Operate(VAddr addr, std::size_t num_pages, KMemoryPermission perm, | 117 | Result Operate(VAddr addr, std::size_t num_pages, KMemoryPermission perm, |
| 118 | OperationType operation, PAddr map_addr = 0); | 118 | OperationType operation, PAddr map_addr = 0); |
| @@ -159,7 +159,7 @@ private: | |||
| 159 | attr_mask, attr, ignore_attr); | 159 | attr_mask, attr, ignore_attr); |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | Result LockMemoryAndOpen(KPageLinkedList* out_pg, PAddr* out_paddr, VAddr addr, size_t size, | 162 | Result LockMemoryAndOpen(KPageGroup* out_pg, PAddr* out_paddr, VAddr addr, size_t size, |
| 163 | KMemoryState state_mask, KMemoryState state, | 163 | KMemoryState state_mask, KMemoryState state, |
| 164 | KMemoryPermission perm_mask, KMemoryPermission perm, | 164 | KMemoryPermission perm_mask, KMemoryPermission perm, |
| 165 | KMemoryAttribute attr_mask, KMemoryAttribute attr, | 165 | KMemoryAttribute attr_mask, KMemoryAttribute attr, |
| @@ -168,10 +168,10 @@ private: | |||
| 168 | KMemoryPermission perm_mask, KMemoryPermission perm, | 168 | KMemoryPermission perm_mask, KMemoryPermission perm, |
| 169 | KMemoryAttribute attr_mask, KMemoryAttribute attr, | 169 | KMemoryAttribute attr_mask, KMemoryAttribute attr, |
| 170 | KMemoryPermission new_perm, KMemoryAttribute lock_attr, | 170 | KMemoryPermission new_perm, KMemoryAttribute lock_attr, |
| 171 | const KPageLinkedList* pg); | 171 | const KPageGroup* pg); |
| 172 | 172 | ||
| 173 | Result MakePageGroup(KPageLinkedList& pg, VAddr addr, size_t num_pages); | 173 | Result MakePageGroup(KPageGroup& pg, VAddr addr, size_t num_pages); |
| 174 | bool IsValidPageGroup(const KPageLinkedList& pg, VAddr addr, size_t num_pages); | 174 | bool IsValidPageGroup(const KPageGroup& pg, VAddr addr, size_t num_pages); |
| 175 | 175 | ||
| 176 | bool IsLockedByCurrentThread() const { | 176 | bool IsLockedByCurrentThread() const { |
| 177 | return general_lock.IsLockedByCurrentThread(); | 177 | return general_lock.IsLockedByCurrentThread(); |
diff --git a/src/core/hle/kernel/k_shared_memory.cpp b/src/core/hle/kernel/k_shared_memory.cpp index a1cd83873..b77735736 100644 --- a/src/core/hle/kernel/k_shared_memory.cpp +++ b/src/core/hle/kernel/k_shared_memory.cpp | |||
| @@ -19,8 +19,7 @@ KSharedMemory::~KSharedMemory() { | |||
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_, | 21 | Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_, |
| 22 | KPageLinkedList&& page_list_, | 22 | KPageGroup&& page_list_, Svc::MemoryPermission owner_permission_, |
| 23 | Svc::MemoryPermission owner_permission_, | ||
| 24 | Svc::MemoryPermission user_permission_, PAddr physical_address_, | 23 | Svc::MemoryPermission user_permission_, PAddr physical_address_, |
| 25 | std::size_t size_, std::string name_) { | 24 | std::size_t size_, std::string name_) { |
| 26 | // Set members. | 25 | // Set members. |
diff --git a/src/core/hle/kernel/k_shared_memory.h b/src/core/hle/kernel/k_shared_memory.h index f84efa236..2c1db0e70 100644 --- a/src/core/hle/kernel/k_shared_memory.h +++ b/src/core/hle/kernel/k_shared_memory.h | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 10 | #include "core/device_memory.h" | 10 | #include "core/device_memory.h" |
| 11 | #include "core/hle/kernel/k_memory_block.h" | 11 | #include "core/hle/kernel/k_memory_block.h" |
| 12 | #include "core/hle/kernel/k_page_linked_list.h" | 12 | #include "core/hle/kernel/k_page_group.h" |
| 13 | #include "core/hle/kernel/k_process.h" | 13 | #include "core/hle/kernel/k_process.h" |
| 14 | #include "core/hle/kernel/slab_helpers.h" | 14 | #include "core/hle/kernel/slab_helpers.h" |
| 15 | #include "core/hle/result.h" | 15 | #include "core/hle/result.h" |
| @@ -27,7 +27,7 @@ public: | |||
| 27 | ~KSharedMemory() override; | 27 | ~KSharedMemory() override; |
| 28 | 28 | ||
| 29 | Result Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_, | 29 | Result Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_, |
| 30 | KPageLinkedList&& page_list_, Svc::MemoryPermission owner_permission_, | 30 | KPageGroup&& page_list_, Svc::MemoryPermission owner_permission_, |
| 31 | Svc::MemoryPermission user_permission_, PAddr physical_address_, | 31 | Svc::MemoryPermission user_permission_, PAddr physical_address_, |
| 32 | std::size_t size_, std::string name_); | 32 | std::size_t size_, std::string name_); |
| 33 | 33 | ||
| @@ -77,7 +77,7 @@ public: | |||
| 77 | private: | 77 | private: |
| 78 | Core::DeviceMemory* device_memory; | 78 | Core::DeviceMemory* device_memory; |
| 79 | KProcess* owner_process{}; | 79 | KProcess* owner_process{}; |
| 80 | KPageLinkedList page_list; | 80 | KPageGroup page_list; |
| 81 | Svc::MemoryPermission owner_permission{}; | 81 | Svc::MemoryPermission owner_permission{}; |
| 82 | Svc::MemoryPermission user_permission{}; | 82 | Svc::MemoryPermission user_permission{}; |
| 83 | PAddr physical_address{}; | 83 | PAddr physical_address{}; |
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index de8a0864c..e809c820f 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -1365,7 +1365,7 @@ static Result MapProcessMemory(Core::System& system, VAddr dst_address, Handle p | |||
| 1365 | ResultInvalidMemoryRegion); | 1365 | ResultInvalidMemoryRegion); |
| 1366 | 1366 | ||
| 1367 | // Create a new page group. | 1367 | // Create a new page group. |
| 1368 | KPageLinkedList pg; | 1368 | KPageGroup pg; |
| 1369 | R_TRY(src_pt.MakeAndOpenPageGroup( | 1369 | R_TRY(src_pt.MakeAndOpenPageGroup( |
| 1370 | std::addressof(pg), src_address, size / PageSize, KMemoryState::FlagCanMapProcess, | 1370 | std::addressof(pg), src_address, size / PageSize, KMemoryState::FlagCanMapProcess, |
| 1371 | KMemoryState::FlagCanMapProcess, KMemoryPermission::None, KMemoryPermission::None, | 1371 | KMemoryState::FlagCanMapProcess, KMemoryPermission::None, KMemoryPermission::None, |