diff options
author | bunnei <bunneidev@gmail.com> | 2022-03-11 09:18:35 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2022-03-15 02:14:53 +0100 |
commit | 08434842b3ea935e4a3b492c18140aff2de2e7ae (patch) | |
tree | 411596886be4f047ff48c44c11da13512c622333 /src/core | |
parent | core: hle: kernel: k_thread: Ensure host Fiber is freed. (diff) | |
download | yuzu-08434842b3ea935e4a3b492c18140aff2de2e7ae.tar yuzu-08434842b3ea935e4a3b492c18140aff2de2e7ae.tar.gz yuzu-08434842b3ea935e4a3b492c18140aff2de2e7ae.tar.bz2 yuzu-08434842b3ea935e4a3b492c18140aff2de2e7ae.tar.lz yuzu-08434842b3ea935e4a3b492c18140aff2de2e7ae.tar.xz yuzu-08434842b3ea935e4a3b492c18140aff2de2e7ae.tar.zst yuzu-08434842b3ea935e4a3b492c18140aff2de2e7ae.zip |
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/core/hle/kernel/k_page_buffer.h | 34 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 5db6a1b3a..43be5e652 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -207,6 +207,7 @@ add_library(core STATIC hle/kernel/k_memory_region.h hle/kernel/k_memory_region_type.h hle/kernel/k_page_bitmap.h + hle/kernel/k_page_buffer.h hle/kernel/k_page_heap.cpp hle/kernel/k_page_heap.h hle/kernel/k_page_linked_list.h diff --git a/src/core/hle/kernel/k_page_buffer.h b/src/core/hle/kernel/k_page_buffer.h new file mode 100644 index 000000000..0a9451228 --- /dev/null +++ b/src/core/hle/kernel/k_page_buffer.h @@ -0,0 +1,34 @@ +// Copyright 2022 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <array> + +#include "common/alignment.h" +#include "common/assert.h" +#include "common/common_types.h" +#include "core/core.h" +#include "core/device_memory.h" +#include "core/hle/kernel/memory_types.h" + +namespace Kernel { + +class KPageBuffer final : public KSlabAllocated<KPageBuffer> { +public: + KPageBuffer() = default; + + static KPageBuffer* FromPhysicalAddress(Core::System& system, PAddr phys_addr) { + ASSERT(Common::IsAligned(phys_addr, PageSize)); + return reinterpret_cast<KPageBuffer*>(system.DeviceMemory().GetPointer(phys_addr)); + } + +private: + [[maybe_unused]] alignas(PageSize) std::array<u8, PageSize> m_buffer{}; +}; + +static_assert(sizeof(KPageBuffer) == PageSize); +static_assert(alignof(KPageBuffer) == PageSize); + +} // namespace Kernel |