diff options
author | Liam <byteslice@airmail.cc> | 2023-12-29 07:00:03 +0100 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2023-12-29 07:07:47 +0100 |
commit | 558192abf4ae3aa29b2b7186c4c5cd2ab0eb397a (patch) | |
tree | ccd2e60aba467330cfa948b14eb30a750693c70f /src/core/hle/service/jit/jit_code_memory.h | |
parent | Merge pull request #12455 from liamwhite/end-wait (diff) | |
download | yuzu-558192abf4ae3aa29b2b7186c4c5cd2ab0eb397a.tar yuzu-558192abf4ae3aa29b2b7186c4c5cd2ab0eb397a.tar.gz yuzu-558192abf4ae3aa29b2b7186c4c5cd2ab0eb397a.tar.bz2 yuzu-558192abf4ae3aa29b2b7186c4c5cd2ab0eb397a.tar.lz yuzu-558192abf4ae3aa29b2b7186c4c5cd2ab0eb397a.tar.xz yuzu-558192abf4ae3aa29b2b7186c4c5cd2ab0eb397a.tar.zst yuzu-558192abf4ae3aa29b2b7186c4c5cd2ab0eb397a.zip |
Diffstat (limited to 'src/core/hle/service/jit/jit_code_memory.h')
-rw-r--r-- | src/core/hle/service/jit/jit_code_memory.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/core/hle/service/jit/jit_code_memory.h b/src/core/hle/service/jit/jit_code_memory.h new file mode 100644 index 000000000..6376d4c4e --- /dev/null +++ b/src/core/hle/service/jit/jit_code_memory.h @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <random> + +#include "core/hle/kernel/k_code_memory.h" + +namespace Service::JIT { + +class CodeMemory { +public: + YUZU_NON_COPYABLE(CodeMemory); + + explicit CodeMemory() = default; + + CodeMemory(CodeMemory&& rhs) { + std::swap(m_code_memory, rhs.m_code_memory); + std::swap(m_size, rhs.m_size); + std::swap(m_address, rhs.m_address); + std::swap(m_perm, rhs.m_perm); + } + + ~CodeMemory() { + this->Finalize(); + } + +public: + Result Initialize(Kernel::KProcess& process, Kernel::KCodeMemory& code_memory, size_t size, + Kernel::Svc::MemoryPermission perm, std::mt19937_64& generate_random); + void Finalize(); + + size_t GetSize() const { + return m_size; + } + + u64 GetAddress() const { + return m_address; + } + +private: + Kernel::KCodeMemory* m_code_memory{}; + size_t m_size{}; + u64 m_address{}; + Kernel::Svc::MemoryPermission m_perm{}; +}; + +} // namespace Service::JIT |