| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
- // SPDX-License-Identifier: GPL-2.0-or-later
- #pragma once
- #include "common/common_types.h"
- #include "common/host_memory.h"
- namespace Core {
- namespace DramMemoryMap {
- enum : u64 {
- Base = 0x80000000ULL,
- KernelReserveBase = Base + 0x60000,
- SlabHeapBase = KernelReserveBase + 0x85000,
- };
- }; // namespace DramMemoryMap
- class DeviceMemory {
- public:
- explicit DeviceMemory();
- ~DeviceMemory();
- DeviceMemory& operator=(const DeviceMemory&) = delete;
- DeviceMemory(const DeviceMemory&) = delete;
- template <typename T>
- PAddr GetPhysicalAddr(const T* ptr) const {
- return (reinterpret_cast<uintptr_t>(ptr) -
- reinterpret_cast<uintptr_t>(buffer.BackingBasePointer())) +
- DramMemoryMap::Base;
- }
- template <typename T>
- T* GetPointer(PAddr addr) {
- return reinterpret_cast<T*>(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;
- };
- } // namespace Core
|