device_memory.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright 2020 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "common/common_types.h"
  6. #include "common/host_memory.h"
  7. namespace Core {
  8. namespace DramMemoryMap {
  9. enum : u64 {
  10. Base = 0x80000000ULL,
  11. KernelReserveBase = Base + 0x60000,
  12. SlabHeapBase = KernelReserveBase + 0x85000,
  13. };
  14. }; // namespace DramMemoryMap
  15. class DeviceMemory {
  16. public:
  17. explicit DeviceMemory();
  18. ~DeviceMemory();
  19. DeviceMemory& operator=(const DeviceMemory&) = delete;
  20. DeviceMemory(const DeviceMemory&) = delete;
  21. template <typename T>
  22. PAddr GetPhysicalAddr(const T* ptr) const {
  23. return (reinterpret_cast<uintptr_t>(ptr) -
  24. reinterpret_cast<uintptr_t>(buffer.BackingBasePointer())) +
  25. DramMemoryMap::Base;
  26. }
  27. u8* GetPointer(PAddr addr) {
  28. return buffer.BackingBasePointer() + (addr - DramMemoryMap::Base);
  29. }
  30. const u8* GetPointer(PAddr addr) const {
  31. return buffer.BackingBasePointer() + (addr - DramMemoryMap::Base);
  32. }
  33. Common::HostMemory buffer;
  34. };
  35. } // namespace Core