diff options
| author | 2022-09-05 17:42:24 -0700 | |
|---|---|---|
| committer | 2022-10-18 19:13:34 -0700 | |
| commit | 47b8160666da8dcb679bb7cabe35a615a1786155 (patch) | |
| tree | c22fd04d12cc19f0155feb98157dc90874e6456b /src | |
| parent | core: hle: result: Add GetInnerValue and Includes methods. (diff) | |
| download | yuzu-47b8160666da8dcb679bb7cabe35a615a1786155.tar.gz yuzu-47b8160666da8dcb679bb7cabe35a615a1786155.tar.xz yuzu-47b8160666da8dcb679bb7cabe35a615a1786155.zip | |
core: device_memory: Templatize GetPointer(..).
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/device_memory.h | 10 | ||||
| -rw-r--r-- | src/core/hle/kernel/init/init_slab_setup.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_code_memory.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_memory_manager.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_buffer.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_table.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_shared_memory.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_shared_memory.h | 4 | ||||
| -rw-r--r-- | src/core/memory.cpp | 6 |
9 files changed, 21 insertions, 19 deletions
diff --git a/src/core/device_memory.h b/src/core/device_memory.h index df61b0c0b..90510733c 100644 --- a/src/core/device_memory.h +++ b/src/core/device_memory.h | |||
| @@ -31,12 +31,14 @@ public: | |||
| 31 | DramMemoryMap::Base; | 31 | DramMemoryMap::Base; |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | u8* GetPointer(PAddr addr) { | 34 | template <typename T> |
| 35 | return buffer.BackingBasePointer() + (addr - DramMemoryMap::Base); | 35 | T* GetPointer(PAddr addr) { |
| 36 | return reinterpret_cast<T*>(buffer.BackingBasePointer() + (addr - DramMemoryMap::Base)); | ||
| 36 | } | 37 | } |
| 37 | 38 | ||
| 38 | const u8* GetPointer(PAddr addr) const { | 39 | template <typename T> |
| 39 | return buffer.BackingBasePointer() + (addr - DramMemoryMap::Base); | 40 | const T* GetPointer(PAddr addr) const { |
| 41 | return reinterpret_cast<T*>(buffer.BackingBasePointer() + (addr - DramMemoryMap::Base)); | ||
| 40 | } | 42 | } |
| 41 | 43 | ||
| 42 | Common::HostMemory buffer; | 44 | Common::HostMemory buffer; |
diff --git a/src/core/hle/kernel/init/init_slab_setup.cpp b/src/core/hle/kernel/init/init_slab_setup.cpp index 9b6b284d0..c84d36c8c 100644 --- a/src/core/hle/kernel/init/init_slab_setup.cpp +++ b/src/core/hle/kernel/init/init_slab_setup.cpp | |||
| @@ -94,8 +94,8 @@ VAddr InitializeSlabHeap(Core::System& system, KMemoryLayout& memory_layout, VAd | |||
| 94 | // TODO(bunnei): Fix this once we support the kernel virtual memory layout. | 94 | // TODO(bunnei): Fix this once we support the kernel virtual memory layout. |
| 95 | 95 | ||
| 96 | if (size > 0) { | 96 | if (size > 0) { |
| 97 | void* backing_kernel_memory{ | 97 | void* backing_kernel_memory{system.DeviceMemory().GetPointer<void>( |
| 98 | system.DeviceMemory().GetPointer(TranslateSlabAddrToPhysical(memory_layout, start))}; | 98 | TranslateSlabAddrToPhysical(memory_layout, start))}; |
| 99 | 99 | ||
| 100 | const KMemoryRegion* region = memory_layout.FindVirtual(start + size - 1); | 100 | const KMemoryRegion* region = memory_layout.FindVirtual(start + size - 1); |
| 101 | ASSERT(region != nullptr); | 101 | ASSERT(region != nullptr); |
| @@ -181,7 +181,7 @@ void InitializeKPageBufferSlabHeap(Core::System& system) { | |||
| 181 | ASSERT(slab_address != 0); | 181 | ASSERT(slab_address != 0); |
| 182 | 182 | ||
| 183 | // Initialize the slabheap. | 183 | // Initialize the slabheap. |
| 184 | KPageBuffer::InitializeSlabHeap(kernel, system.DeviceMemory().GetPointer(slab_address), | 184 | KPageBuffer::InitializeSlabHeap(kernel, system.DeviceMemory().GetPointer<void>(slab_address), |
| 185 | slab_size); | 185 | slab_size); |
| 186 | } | 186 | } |
| 187 | 187 | ||
diff --git a/src/core/hle/kernel/k_code_memory.cpp b/src/core/hle/kernel/k_code_memory.cpp index da57ceb21..4b1c134d4 100644 --- a/src/core/hle/kernel/k_code_memory.cpp +++ b/src/core/hle/kernel/k_code_memory.cpp | |||
| @@ -34,7 +34,7 @@ Result KCodeMemory::Initialize(Core::DeviceMemory& device_memory, VAddr addr, si | |||
| 34 | 34 | ||
| 35 | // Clear the memory. | 35 | // Clear the memory. |
| 36 | for (const auto& block : m_page_group.Nodes()) { | 36 | for (const auto& block : m_page_group.Nodes()) { |
| 37 | std::memset(device_memory.GetPointer(block.GetAddress()), 0xFF, block.GetSize()); | 37 | std::memset(device_memory.GetPointer<void>(block.GetAddress()), 0xFF, block.GetSize()); |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | // Set remaining tracking members. | 40 | // Set remaining tracking members. |
diff --git a/src/core/hle/kernel/k_memory_manager.cpp b/src/core/hle/kernel/k_memory_manager.cpp index 5b0a9963a..646711505 100644 --- a/src/core/hle/kernel/k_memory_manager.cpp +++ b/src/core/hle/kernel/k_memory_manager.cpp | |||
| @@ -331,7 +331,7 @@ Result KMemoryManager::AllocateAndOpenForProcess(KPageGroup* out, size_t num_pag | |||
| 331 | 331 | ||
| 332 | // Set all the allocated memory. | 332 | // Set all the allocated memory. |
| 333 | for (const auto& block : out->Nodes()) { | 333 | for (const auto& block : out->Nodes()) { |
| 334 | std::memset(system.DeviceMemory().GetPointer(block.GetAddress()), fill_pattern, | 334 | std::memset(system.DeviceMemory().GetPointer<void>(block.GetAddress()), fill_pattern, |
| 335 | block.GetSize()); | 335 | block.GetSize()); |
| 336 | } | 336 | } |
| 337 | 337 | ||
diff --git a/src/core/hle/kernel/k_page_buffer.cpp b/src/core/hle/kernel/k_page_buffer.cpp index 1a0bf4439..0c16dded4 100644 --- a/src/core/hle/kernel/k_page_buffer.cpp +++ b/src/core/hle/kernel/k_page_buffer.cpp | |||
| @@ -12,7 +12,7 @@ namespace Kernel { | |||
| 12 | 12 | ||
| 13 | KPageBuffer* KPageBuffer::FromPhysicalAddress(Core::System& system, PAddr phys_addr) { | 13 | KPageBuffer* KPageBuffer::FromPhysicalAddress(Core::System& system, PAddr phys_addr) { |
| 14 | ASSERT(Common::IsAligned(phys_addr, PageSize)); | 14 | ASSERT(Common::IsAligned(phys_addr, PageSize)); |
| 15 | return reinterpret_cast<KPageBuffer*>(system.DeviceMemory().GetPointer(phys_addr)); | 15 | return system.DeviceMemory().GetPointer<KPageBuffer>(phys_addr); |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | } // namespace Kernel | 18 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/k_page_table.cpp b/src/core/hle/kernel/k_page_table.cpp index d975de844..8ebb75338 100644 --- a/src/core/hle/kernel/k_page_table.cpp +++ b/src/core/hle/kernel/k_page_table.cpp | |||
| @@ -1648,7 +1648,7 @@ Result KPageTable::SetHeapSize(VAddr* out, std::size_t size) { | |||
| 1648 | 1648 | ||
| 1649 | // Clear all the newly allocated pages. | 1649 | // Clear all the newly allocated pages. |
| 1650 | for (const auto& it : pg.Nodes()) { | 1650 | for (const auto& it : pg.Nodes()) { |
| 1651 | std::memset(system.DeviceMemory().GetPointer(it.GetAddress()), heap_fill_value, | 1651 | std::memset(system.DeviceMemory().GetPointer<void>(it.GetAddress()), heap_fill_value, |
| 1652 | it.GetSize()); | 1652 | it.GetSize()); |
| 1653 | } | 1653 | } |
| 1654 | 1654 | ||
| @@ -1805,9 +1805,9 @@ bool KPageTable::IsRegionMapped(VAddr address, u64 size) { | |||
| 1805 | } | 1805 | } |
| 1806 | 1806 | ||
| 1807 | bool KPageTable::IsRegionContiguous(VAddr addr, u64 size) const { | 1807 | bool KPageTable::IsRegionContiguous(VAddr addr, u64 size) const { |
| 1808 | auto start_ptr = system.Memory().GetPointer(addr); | 1808 | auto start_ptr = system.DeviceMemory().GetPointer<u8>(addr); |
| 1809 | for (u64 offset{}; offset < size; offset += PageSize) { | 1809 | for (u64 offset{}; offset < size; offset += PageSize) { |
| 1810 | if (start_ptr != system.Memory().GetPointer(addr + offset)) { | 1810 | if (start_ptr != system.DeviceMemory().GetPointer<u8>(addr + offset)) { |
| 1811 | return false; | 1811 | return false; |
| 1812 | } | 1812 | } |
| 1813 | start_ptr += PageSize; | 1813 | start_ptr += PageSize; |
diff --git a/src/core/hle/kernel/k_shared_memory.cpp b/src/core/hle/kernel/k_shared_memory.cpp index 8ff1545b6..a039cc591 100644 --- a/src/core/hle/kernel/k_shared_memory.cpp +++ b/src/core/hle/kernel/k_shared_memory.cpp | |||
| @@ -50,7 +50,7 @@ Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* o | |||
| 50 | is_initialized = true; | 50 | is_initialized = true; |
| 51 | 51 | ||
| 52 | // Clear all pages in the memory. | 52 | // Clear all pages in the memory. |
| 53 | std::memset(device_memory_.GetPointer(physical_address_), 0, size_); | 53 | std::memset(device_memory_.GetPointer<void>(physical_address_), 0, size_); |
| 54 | 54 | ||
| 55 | return ResultSuccess; | 55 | return ResultSuccess; |
| 56 | } | 56 | } |
diff --git a/src/core/hle/kernel/k_shared_memory.h b/src/core/hle/kernel/k_shared_memory.h index 34cb98456..5620c3660 100644 --- a/src/core/hle/kernel/k_shared_memory.h +++ b/src/core/hle/kernel/k_shared_memory.h | |||
| @@ -54,7 +54,7 @@ public: | |||
| 54 | * @return A pointer to the shared memory block from the specified offset | 54 | * @return A pointer to the shared memory block from the specified offset |
| 55 | */ | 55 | */ |
| 56 | u8* GetPointer(std::size_t offset = 0) { | 56 | u8* GetPointer(std::size_t offset = 0) { |
| 57 | return device_memory->GetPointer(physical_address + offset); | 57 | return device_memory->GetPointer<u8>(physical_address + offset); |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | /** | 60 | /** |
| @@ -63,7 +63,7 @@ public: | |||
| 63 | * @return A pointer to the shared memory block from the specified offset | 63 | * @return A pointer to the shared memory block from the specified offset |
| 64 | */ | 64 | */ |
| 65 | const u8* GetPointer(std::size_t offset = 0) const { | 65 | const u8* GetPointer(std::size_t offset = 0) const { |
| 66 | return device_memory->GetPointer(physical_address + offset); | 66 | return device_memory->GetPointer<u8>(physical_address + offset); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | void Finalize() override; | 69 | void Finalize() override; |
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 2ac792566..9637cb5b1 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -65,7 +65,7 @@ struct Memory::Impl { | |||
| 65 | return {}; | 65 | return {}; |
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | return system.DeviceMemory().GetPointer(paddr) + vaddr; | 68 | return system.DeviceMemory().GetPointer<u8>(paddr) + vaddr; |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | [[nodiscard]] u8* GetPointerFromDebugMemory(VAddr vaddr) const { | 71 | [[nodiscard]] u8* GetPointerFromDebugMemory(VAddr vaddr) const { |
| @@ -75,7 +75,7 @@ struct Memory::Impl { | |||
| 75 | return {}; | 75 | return {}; |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | return system.DeviceMemory().GetPointer(paddr) + vaddr; | 78 | return system.DeviceMemory().GetPointer<u8>(paddr) + vaddr; |
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | u8 Read8(const VAddr addr) { | 81 | u8 Read8(const VAddr addr) { |
| @@ -499,7 +499,7 @@ struct Memory::Impl { | |||
| 499 | } else { | 499 | } else { |
| 500 | while (base != end) { | 500 | while (base != end) { |
| 501 | page_table.pointers[base].Store( | 501 | page_table.pointers[base].Store( |
| 502 | system.DeviceMemory().GetPointer(target) - (base << YUZU_PAGEBITS), type); | 502 | system.DeviceMemory().GetPointer<u8>(target) - (base << YUZU_PAGEBITS), type); |
| 503 | page_table.backing_addr[base] = target - (base << YUZU_PAGEBITS); | 503 | page_table.backing_addr[base] = target - (base << YUZU_PAGEBITS); |
| 504 | 504 | ||
| 505 | ASSERT_MSG(page_table.pointers[base].Pointer(), | 505 | ASSERT_MSG(page_table.pointers[base].Pointer(), |