diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_buffer.cpp | 19 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_buffer.h | 9 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_thread_local_page.cpp | 1 | 
4 files changed, 23 insertions, 7 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 1f234c822..1d4e92edb 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -209,6 +209,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.cpp      hle/kernel/k_page_buffer.h      hle/kernel/k_page_heap.cpp      hle/kernel/k_page_heap.h diff --git a/src/core/hle/kernel/k_page_buffer.cpp b/src/core/hle/kernel/k_page_buffer.cpp new file mode 100644 index 000000000..f7df4a9a8 --- /dev/null +++ b/src/core/hle/kernel/k_page_buffer.cpp @@ -0,0 +1,19 @@ +// Copyright 2022 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/alignment.h" +#include "common/assert.h" +#include "core/core.h" +#include "core/device_memory.h" +#include "core/hle/kernel/k_page_buffer.h" +#include "core/hle/kernel/memory_types.h" + +namespace Kernel { + +KPageBuffer* KPageBuffer::FromPhysicalAddress(Core::System& system, PAddr phys_addr) { +    ASSERT(Common::IsAligned(phys_addr, PageSize)); +    return reinterpret_cast<KPageBuffer*>(system.DeviceMemory().GetPointer(phys_addr)); +} + +} // namespace Kernel diff --git a/src/core/hle/kernel/k_page_buffer.h b/src/core/hle/kernel/k_page_buffer.h index 0a9451228..6ff3c1568 100644 --- a/src/core/hle/kernel/k_page_buffer.h +++ b/src/core/hle/kernel/k_page_buffer.h @@ -6,12 +6,10 @@  #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" +#include "core/hle/kernel/slab_helpers.h"  namespace Kernel { @@ -19,10 +17,7 @@ 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)); -    } +    static KPageBuffer* FromPhysicalAddress(Core::System& system, PAddr phys_addr);  private:      [[maybe_unused]] alignas(PageSize) std::array<u8, PageSize> m_buffer{}; diff --git a/src/core/hle/kernel/k_thread_local_page.cpp b/src/core/hle/kernel/k_thread_local_page.cpp index 4653c29f6..17b233fca 100644 --- a/src/core/hle/kernel/k_thread_local_page.cpp +++ b/src/core/hle/kernel/k_thread_local_page.cpp @@ -3,6 +3,7 @@  // Refer to the license.txt file included.  #include "common/scope_exit.h" +#include "core/core.h"  #include "core/hle/kernel/k_memory_block.h"  #include "core/hle/kernel/k_page_table.h"  #include "core/hle/kernel/k_process.h"  | 
