diff options
| -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:                 DramMemoryMap::Base;      } -    u8* GetPointer(PAddr addr) { -        return buffer.BackingBasePointer() + (addr - DramMemoryMap::Base); +    template <typename T> +    T* GetPointer(PAddr addr) { +        return reinterpret_cast<T*>(buffer.BackingBasePointer() + (addr - DramMemoryMap::Base));      } -    const u8* GetPointer(PAddr addr) const { -        return buffer.BackingBasePointer() + (addr - DramMemoryMap::Base); +    template <typename T> +    const T* GetPointer(PAddr addr) const { +        return reinterpret_cast<T*>(buffer.BackingBasePointer() + (addr - DramMemoryMap::Base));      }      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      // TODO(bunnei): Fix this once we support the kernel virtual memory layout.      if (size > 0) { -        void* backing_kernel_memory{ -            system.DeviceMemory().GetPointer(TranslateSlabAddrToPhysical(memory_layout, start))}; +        void* backing_kernel_memory{system.DeviceMemory().GetPointer<void>( +            TranslateSlabAddrToPhysical(memory_layout, start))};          const KMemoryRegion* region = memory_layout.FindVirtual(start + size - 1);          ASSERT(region != nullptr); @@ -181,7 +181,7 @@ void InitializeKPageBufferSlabHeap(Core::System& system) {      ASSERT(slab_address != 0);      // Initialize the slabheap. -    KPageBuffer::InitializeSlabHeap(kernel, system.DeviceMemory().GetPointer(slab_address), +    KPageBuffer::InitializeSlabHeap(kernel, system.DeviceMemory().GetPointer<void>(slab_address),                                      slab_size);  } 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      // Clear the memory.      for (const auto& block : m_page_group.Nodes()) { -        std::memset(device_memory.GetPointer(block.GetAddress()), 0xFF, block.GetSize()); +        std::memset(device_memory.GetPointer<void>(block.GetAddress()), 0xFF, block.GetSize());      }      // 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      // Set all the allocated memory.      for (const auto& block : out->Nodes()) { -        std::memset(system.DeviceMemory().GetPointer(block.GetAddress()), fill_pattern, +        std::memset(system.DeviceMemory().GetPointer<void>(block.GetAddress()), fill_pattern,                      block.GetSize());      } 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 {  KPageBuffer* KPageBuffer::FromPhysicalAddress(Core::System& system, PAddr phys_addr) {      ASSERT(Common::IsAligned(phys_addr, PageSize)); -    return reinterpret_cast<KPageBuffer*>(system.DeviceMemory().GetPointer(phys_addr)); +    return system.DeviceMemory().GetPointer<KPageBuffer>(phys_addr);  }  } // 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) {      // Clear all the newly allocated pages.      for (const auto& it : pg.Nodes()) { -        std::memset(system.DeviceMemory().GetPointer(it.GetAddress()), heap_fill_value, +        std::memset(system.DeviceMemory().GetPointer<void>(it.GetAddress()), heap_fill_value,                      it.GetSize());      } @@ -1805,9 +1805,9 @@ bool KPageTable::IsRegionMapped(VAddr address, u64 size) {  }  bool KPageTable::IsRegionContiguous(VAddr addr, u64 size) const { -    auto start_ptr = system.Memory().GetPointer(addr); +    auto start_ptr = system.DeviceMemory().GetPointer<u8>(addr);      for (u64 offset{}; offset < size; offset += PageSize) { -        if (start_ptr != system.Memory().GetPointer(addr + offset)) { +        if (start_ptr != system.DeviceMemory().GetPointer<u8>(addr + offset)) {              return false;          }          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      is_initialized = true;      // Clear all pages in the memory. -    std::memset(device_memory_.GetPointer(physical_address_), 0, size_); +    std::memset(device_memory_.GetPointer<void>(physical_address_), 0, size_);      return ResultSuccess;  } 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:       * @return A pointer to the shared memory block from the specified offset       */      u8* GetPointer(std::size_t offset = 0) { -        return device_memory->GetPointer(physical_address + offset); +        return device_memory->GetPointer<u8>(physical_address + offset);      }      /** @@ -63,7 +63,7 @@ public:       * @return A pointer to the shared memory block from the specified offset       */      const u8* GetPointer(std::size_t offset = 0) const { -        return device_memory->GetPointer(physical_address + offset); +        return device_memory->GetPointer<u8>(physical_address + offset);      }      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 {              return {};          } -        return system.DeviceMemory().GetPointer(paddr) + vaddr; +        return system.DeviceMemory().GetPointer<u8>(paddr) + vaddr;      }      [[nodiscard]] u8* GetPointerFromDebugMemory(VAddr vaddr) const { @@ -75,7 +75,7 @@ struct Memory::Impl {              return {};          } -        return system.DeviceMemory().GetPointer(paddr) + vaddr; +        return system.DeviceMemory().GetPointer<u8>(paddr) + vaddr;      }      u8 Read8(const VAddr addr) { @@ -499,7 +499,7 @@ struct Memory::Impl {          } else {              while (base != end) {                  page_table.pointers[base].Store( -                    system.DeviceMemory().GetPointer(target) - (base << YUZU_PAGEBITS), type); +                    system.DeviceMemory().GetPointer<u8>(target) - (base << YUZU_PAGEBITS), type);                  page_table.backing_addr[base] = target - (base << YUZU_PAGEBITS);                  ASSERT_MSG(page_table.pointers[base].Pointer(), | 
