diff options
| author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-12-21 00:04:03 +0100 |
|---|---|---|
| committer | Liam <byteslice@airmail.cc> | 2024-01-18 21:12:30 -0500 |
| commit | 04b4af6044570e647c27a3e0af3dfd94e0014860 (patch) | |
| tree | 775c82e0b3b07090b1a3c83859bebe2c0f0e1369 /src/core/device_memory.h | |
| parent | 5083dea91ee95fcc511cb49e29fbbb60dd42b48e (diff) | |
Core: Initial implementation of device memory mapping
Diffstat (limited to 'src/core/device_memory.h')
| -rw-r--r-- | src/core/device_memory.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/core/device_memory.h b/src/core/device_memory.h index 13388b73e0..11bf0e3268 100644 --- a/src/core/device_memory.h +++ b/src/core/device_memory.h @@ -32,6 +32,12 @@ public: } template <typename T> + PAddr GetRawPhysicalAddr(const T* ptr) const { + return static_cast<PAddr>(reinterpret_cast<uintptr_t>(ptr) - + reinterpret_cast<uintptr_t>(buffer.BackingBasePointer())); + } + + template <typename T> T* GetPointer(Common::PhysicalAddress addr) { return reinterpret_cast<T*>(buffer.BackingBasePointer() + (GetInteger(addr) - DramMemoryMap::Base)); @@ -43,6 +49,16 @@ public: (GetInteger(addr) - DramMemoryMap::Base)); } + template <typename T> + T* GetPointerFromRaw(PAddr addr) { + return reinterpret_cast<T*>(buffer.BackingBasePointer() + addr); + } + + template <typename T> + const T* GetPointerFromRaw(PAddr addr) const { + return reinterpret_cast<T*>(buffer.BackingBasePointer() + addr); + } + Common::HostMemory buffer; }; |
