diff options
author | bunnei <bunneidev@gmail.com> | 2020-04-17 22:33:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-17 22:33:08 +0200 |
commit | b8f5c71f2d7f819821acf036175cce65ab1ae12c (patch) | |
tree | 151d7ed4e47536dc0e149a7117387b6a502d7da6 /src/core/device_memory.h | |
parent | Merge pull request #3682 from lioncash/uam (diff) | |
parent | core: hle: Address various feedback & code cleanup. (diff) | |
download | yuzu-b8f5c71f2d7f819821acf036175cce65ab1ae12c.tar yuzu-b8f5c71f2d7f819821acf036175cce65ab1ae12c.tar.gz yuzu-b8f5c71f2d7f819821acf036175cce65ab1ae12c.tar.bz2 yuzu-b8f5c71f2d7f819821acf036175cce65ab1ae12c.tar.lz yuzu-b8f5c71f2d7f819821acf036175cce65ab1ae12c.tar.xz yuzu-b8f5c71f2d7f819821acf036175cce65ab1ae12c.tar.zst yuzu-b8f5c71f2d7f819821acf036175cce65ab1ae12c.zip |
Diffstat (limited to 'src/core/device_memory.h')
-rw-r--r-- | src/core/device_memory.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/core/device_memory.h b/src/core/device_memory.h new file mode 100644 index 000000000..9efa088d0 --- /dev/null +++ b/src/core/device_memory.h @@ -0,0 +1,51 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "common/assert.h" +#include "common/common_funcs.h" +#include "common/virtual_buffer.h" + +namespace Core { + +class System; + +namespace DramMemoryMap { +enum : u64 { + Base = 0x80000000ULL, + Size = 0x100000000ULL, + End = Base + Size, + KernelReserveBase = Base + 0x60000, + SlabHeapBase = KernelReserveBase + 0x85000, + SlapHeapSize = 0xa21000, + SlabHeapEnd = SlabHeapBase + SlapHeapSize, +}; +}; // namespace DramMemoryMap + +class DeviceMemory : NonCopyable { +public: + explicit DeviceMemory(Core::System& system); + ~DeviceMemory(); + + template <typename T> + PAddr GetPhysicalAddr(const T* ptr) const { + return (reinterpret_cast<uintptr_t>(ptr) - reinterpret_cast<uintptr_t>(buffer.data())) + + DramMemoryMap::Base; + } + + u8* GetPointer(PAddr addr) { + return buffer.data() + (addr - DramMemoryMap::Base); + } + + const u8* GetPointer(PAddr addr) const { + return buffer.data() + (addr - DramMemoryMap::Base); + } + +private: + Common::VirtualBuffer<u8> buffer; + Core::System& system; +}; + +} // namespace Core |