Просмотр исходного кода

hle: kernel: Migrate MemoryLayout to KMemoryLayout.

bunnei 5 лет назад
Родитель
Сommit
1d162f28d1

+ 1 - 1
src/core/CMakeLists.txt

@@ -166,6 +166,7 @@ add_library(core STATIC
     hle/kernel/k_light_condition_variable.h
     hle/kernel/k_light_condition_variable.h
     hle/kernel/k_light_lock.cpp
     hle/kernel/k_light_lock.cpp
     hle/kernel/k_light_lock.h
     hle/kernel/k_light_lock.h
+    hle/kernel/k_memory_layout.h
     hle/kernel/k_page_bitmap.h
     hle/kernel/k_page_bitmap.h
     hle/kernel/k_priority_queue.h
     hle/kernel/k_priority_queue.h
     hle/kernel/k_readable_event.cpp
     hle/kernel/k_readable_event.cpp
@@ -196,7 +197,6 @@ add_library(core STATIC
     hle/kernel/memory/memory_block.h
     hle/kernel/memory/memory_block.h
     hle/kernel/memory/memory_block_manager.cpp
     hle/kernel/memory/memory_block_manager.cpp
     hle/kernel/memory/memory_block_manager.h
     hle/kernel/memory/memory_block_manager.h
-    hle/kernel/memory/memory_layout.h
     hle/kernel/memory/memory_manager.cpp
     hle/kernel/memory/memory_manager.cpp
     hle/kernel/memory/memory_manager.h
     hle/kernel/memory/memory_manager.h
     hle/kernel/memory/memory_types.h
     hle/kernel/memory/memory_types.h

+ 17 - 17
src/core/hle/kernel/memory/memory_layout.h → src/core/hle/kernel/k_memory_layout.h

@@ -7,7 +7,7 @@
 #include "common/common_types.h"
 #include "common/common_types.h"
 #include "core/device_memory.h"
 #include "core/device_memory.h"
 
 
-namespace Kernel::Memory {
+namespace Kernel {
 
 
 constexpr std::size_t KernelAslrAlignment = 2 * 1024 * 1024;
 constexpr std::size_t KernelAslrAlignment = 2 * 1024 * 1024;
 constexpr std::size_t KernelVirtualAddressSpaceWidth = 1ULL << 39;
 constexpr std::size_t KernelVirtualAddressSpaceWidth = 1ULL << 39;
@@ -27,8 +27,8 @@ constexpr bool IsKernelAddress(VAddr address) {
     return KernelVirtualAddressSpaceBase <= address && address < KernelVirtualAddressSpaceEnd;
     return KernelVirtualAddressSpaceBase <= address && address < KernelVirtualAddressSpaceEnd;
 }
 }
 
 
-class MemoryRegion final {
-    friend class MemoryLayout;
+class KMemoryRegion final {
+    friend class KMemoryLayout;
 
 
 public:
 public:
     constexpr PAddr StartAddress() const {
     constexpr PAddr StartAddress() const {
@@ -40,29 +40,29 @@ public:
     }
     }
 
 
 private:
 private:
-    constexpr MemoryRegion() = default;
-    constexpr MemoryRegion(PAddr start_address, PAddr end_address)
+    constexpr KMemoryRegion() = default;
+    constexpr KMemoryRegion(PAddr start_address, PAddr end_address)
         : start_address{start_address}, end_address{end_address} {}
         : start_address{start_address}, end_address{end_address} {}
 
 
     const PAddr start_address{};
     const PAddr start_address{};
     const PAddr end_address{};
     const PAddr end_address{};
 };
 };
 
 
-class MemoryLayout final {
+class KMemoryLayout final {
 public:
 public:
-    constexpr const MemoryRegion& Application() const {
+    constexpr const KMemoryRegion& Application() const {
         return application;
         return application;
     }
     }
 
 
-    constexpr const MemoryRegion& Applet() const {
+    constexpr const KMemoryRegion& Applet() const {
         return applet;
         return applet;
     }
     }
 
 
-    constexpr const MemoryRegion& System() const {
+    constexpr const KMemoryRegion& System() const {
         return system;
         return system;
     }
     }
 
 
-    static constexpr MemoryLayout GetDefaultLayout() {
+    static constexpr KMemoryLayout GetDefaultLayout() {
         constexpr std::size_t application_size{0xcd500000};
         constexpr std::size_t application_size{0xcd500000};
         constexpr std::size_t applet_size{0x1fb00000};
         constexpr std::size_t applet_size{0x1fb00000};
         constexpr PAddr application_start_address{Core::DramMemoryMap::End - application_size};
         constexpr PAddr application_start_address{Core::DramMemoryMap::End - application_size};
@@ -76,15 +76,15 @@ public:
     }
     }
 
 
 private:
 private:
-    constexpr MemoryLayout(PAddr application_start_address, std::size_t application_size,
-                           PAddr applet_start_address, std::size_t applet_size,
-                           PAddr system_start_address, std::size_t system_size)
+    constexpr KMemoryLayout(PAddr application_start_address, std::size_t application_size,
+                            PAddr applet_start_address, std::size_t applet_size,
+                            PAddr system_start_address, std::size_t system_size)
         : application{application_start_address, application_size},
         : application{application_start_address, application_size},
           applet{applet_start_address, applet_size}, system{system_start_address, system_size} {}
           applet{applet_start_address, applet_size}, system{system_start_address, system_size} {}
 
 
-    const MemoryRegion application;
-    const MemoryRegion applet;
-    const MemoryRegion system;
+    const KMemoryRegion application;
+    const KMemoryRegion applet;
+    const KMemoryRegion system;
 };
 };
 
 
-} // namespace Kernel::Memory
+} // namespace Kernel

+ 4 - 4
src/core/hle/kernel/k_thread.cpp

@@ -20,13 +20,13 @@
 #include "core/hardware_properties.h"
 #include "core/hardware_properties.h"
 #include "core/hle/kernel/handle_table.h"
 #include "core/hle/kernel/handle_table.h"
 #include "core/hle/kernel/k_condition_variable.h"
 #include "core/hle/kernel/k_condition_variable.h"
+#include "core/hle/kernel/k_memory_layout.h"
 #include "core/hle/kernel/k_resource_limit.h"
 #include "core/hle/kernel/k_resource_limit.h"
 #include "core/hle/kernel/k_scheduler.h"
 #include "core/hle/kernel/k_scheduler.h"
 #include "core/hle/kernel/k_scoped_scheduler_lock_and_sleep.h"
 #include "core/hle/kernel/k_scoped_scheduler_lock_and_sleep.h"
 #include "core/hle/kernel/k_thread.h"
 #include "core/hle/kernel/k_thread.h"
 #include "core/hle/kernel/k_thread_queue.h"
 #include "core/hle/kernel/k_thread_queue.h"
 #include "core/hle/kernel/kernel.h"
 #include "core/hle/kernel/kernel.h"
-#include "core/hle/kernel/memory/memory_layout.h"
 #include "core/hle/kernel/object.h"
 #include "core/hle/kernel/object.h"
 #include "core/hle/kernel/process.h"
 #include "core/hle/kernel/process.h"
 #include "core/hle/kernel/svc_results.h"
 #include "core/hle/kernel/svc_results.h"
@@ -782,7 +782,7 @@ void KThread::AddWaiterImpl(KThread* thread) {
     }
     }
 
 
     // Keep track of how many kernel waiters we have.
     // Keep track of how many kernel waiters we have.
-    if (Memory::IsKernelAddressKey(thread->GetAddressKey())) {
+    if (IsKernelAddressKey(thread->GetAddressKey())) {
         ASSERT((num_kernel_waiters++) >= 0);
         ASSERT((num_kernel_waiters++) >= 0);
     }
     }
 
 
@@ -795,7 +795,7 @@ void KThread::RemoveWaiterImpl(KThread* thread) {
     ASSERT(kernel.GlobalSchedulerContext().IsLocked());
     ASSERT(kernel.GlobalSchedulerContext().IsLocked());
 
 
     // Keep track of how many kernel waiters we have.
     // Keep track of how many kernel waiters we have.
-    if (Memory::IsKernelAddressKey(thread->GetAddressKey())) {
+    if (IsKernelAddressKey(thread->GetAddressKey())) {
         ASSERT((num_kernel_waiters--) > 0);
         ASSERT((num_kernel_waiters--) > 0);
     }
     }
 
 
@@ -870,7 +870,7 @@ KThread* KThread::RemoveWaiterByKey(s32* out_num_waiters, VAddr key) {
             KThread* thread = std::addressof(*it);
             KThread* thread = std::addressof(*it);
 
 
             // Keep track of how many kernel waiters we have.
             // Keep track of how many kernel waiters we have.
-            if (Memory::IsKernelAddressKey(thread->GetAddressKey())) {
+            if (IsKernelAddressKey(thread->GetAddressKey())) {
                 ASSERT((num_kernel_waiters--) > 0);
                 ASSERT((num_kernel_waiters--) > 0);
             }
             }
             it = waiter_list.erase(it);
             it = waiter_list.erase(it);

+ 2 - 2
src/core/hle/kernel/kernel.cpp

@@ -27,12 +27,12 @@
 #include "core/hardware_properties.h"
 #include "core/hardware_properties.h"
 #include "core/hle/kernel/client_port.h"
 #include "core/hle/kernel/client_port.h"
 #include "core/hle/kernel/handle_table.h"
 #include "core/hle/kernel/handle_table.h"
+#include "core/hle/kernel/k_memory_layout.h"
 #include "core/hle/kernel/k_resource_limit.h"
 #include "core/hle/kernel/k_resource_limit.h"
 #include "core/hle/kernel/k_scheduler.h"
 #include "core/hle/kernel/k_scheduler.h"
 #include "core/hle/kernel/k_shared_memory.h"
 #include "core/hle/kernel/k_shared_memory.h"
 #include "core/hle/kernel/k_thread.h"
 #include "core/hle/kernel/k_thread.h"
 #include "core/hle/kernel/kernel.h"
 #include "core/hle/kernel/kernel.h"
-#include "core/hle/kernel/memory/memory_layout.h"
 #include "core/hle/kernel/memory/memory_manager.h"
 #include "core/hle/kernel/memory/memory_manager.h"
 #include "core/hle/kernel/memory/slab_heap.h"
 #include "core/hle/kernel/memory/slab_heap.h"
 #include "core/hle/kernel/physical_core.h"
 #include "core/hle/kernel/physical_core.h"
@@ -266,7 +266,7 @@ struct KernelCore::Impl {
 
 
     void InitializeMemoryLayout() {
     void InitializeMemoryLayout() {
         // Initialize memory layout
         // Initialize memory layout
-        constexpr Memory::MemoryLayout layout{Memory::MemoryLayout::GetDefaultLayout()};
+        constexpr KMemoryLayout layout{KMemoryLayout::GetDefaultLayout()};
         constexpr std::size_t hid_size{0x40000};
         constexpr std::size_t hid_size{0x40000};
         constexpr std::size_t font_size{0x1100000};
         constexpr std::size_t font_size{0x1100000};
         constexpr std::size_t irs_size{0x8000};
         constexpr std::size_t irs_size{0x8000};

+ 6 - 7
src/core/hle/kernel/svc.cpp

@@ -27,6 +27,7 @@
 #include "core/hle/kernel/k_address_arbiter.h"
 #include "core/hle/kernel/k_address_arbiter.h"
 #include "core/hle/kernel/k_condition_variable.h"
 #include "core/hle/kernel/k_condition_variable.h"
 #include "core/hle/kernel/k_event.h"
 #include "core/hle/kernel/k_event.h"
+#include "core/hle/kernel/k_memory_layout.h"
 #include "core/hle/kernel/k_readable_event.h"
 #include "core/hle/kernel/k_readable_event.h"
 #include "core/hle/kernel/k_resource_limit.h"
 #include "core/hle/kernel/k_resource_limit.h"
 #include "core/hle/kernel/k_scheduler.h"
 #include "core/hle/kernel/k_scheduler.h"
@@ -38,7 +39,6 @@
 #include "core/hle/kernel/k_writable_event.h"
 #include "core/hle/kernel/k_writable_event.h"
 #include "core/hle/kernel/kernel.h"
 #include "core/hle/kernel/kernel.h"
 #include "core/hle/kernel/memory/memory_block.h"
 #include "core/hle/kernel/memory/memory_block.h"
-#include "core/hle/kernel/memory/memory_layout.h"
 #include "core/hle/kernel/memory/page_table.h"
 #include "core/hle/kernel/memory/page_table.h"
 #include "core/hle/kernel/physical_core.h"
 #include "core/hle/kernel/physical_core.h"
 #include "core/hle/kernel/process.h"
 #include "core/hle/kernel/process.h"
@@ -508,7 +508,7 @@ static ResultCode ArbitrateLock(Core::System& system, Handle thread_handle, VAdd
               thread_handle, address, tag);
               thread_handle, address, tag);
 
 
     // Validate the input address.
     // Validate the input address.
-    if (Memory::IsKernelAddress(address)) {
+    if (IsKernelAddress(address)) {
         LOG_ERROR(Kernel_SVC, "Attempting to arbitrate a lock on a kernel address (address={:08X})",
         LOG_ERROR(Kernel_SVC, "Attempting to arbitrate a lock on a kernel address (address={:08X})",
                   address);
                   address);
         return ResultInvalidCurrentMemory;
         return ResultInvalidCurrentMemory;
@@ -531,8 +531,7 @@ static ResultCode ArbitrateUnlock(Core::System& system, VAddr address) {
     LOG_TRACE(Kernel_SVC, "called address=0x{:X}", address);
     LOG_TRACE(Kernel_SVC, "called address=0x{:X}", address);
 
 
     // Validate the input address.
     // Validate the input address.
-
-    if (Memory::IsKernelAddress(address)) {
+    if (IsKernelAddress(address)) {
         LOG_ERROR(Kernel_SVC,
         LOG_ERROR(Kernel_SVC,
                   "Attempting to arbitrate an unlock on a kernel address (address={:08X})",
                   "Attempting to arbitrate an unlock on a kernel address (address={:08X})",
                   address);
                   address);
@@ -1638,7 +1637,7 @@ static ResultCode WaitProcessWideKeyAtomic(Core::System& system, VAddr address,
               cv_key, tag, timeout_ns);
               cv_key, tag, timeout_ns);
 
 
     // Validate input.
     // Validate input.
-    if (Memory::IsKernelAddress(address)) {
+    if (IsKernelAddress(address)) {
         LOG_ERROR(Kernel_SVC, "Attempted to wait on kernel address (address={:08X})", address);
         LOG_ERROR(Kernel_SVC, "Attempted to wait on kernel address (address={:08X})", address);
         return ResultInvalidCurrentMemory;
         return ResultInvalidCurrentMemory;
     }
     }
@@ -1720,7 +1719,7 @@ static ResultCode WaitForAddress(Core::System& system, VAddr address, Svc::Arbit
               address, arb_type, value, timeout_ns);
               address, arb_type, value, timeout_ns);
 
 
     // Validate input.
     // Validate input.
-    if (Memory::IsKernelAddress(address)) {
+    if (IsKernelAddress(address)) {
         LOG_ERROR(Kernel_SVC, "Attempting to wait on kernel address (address={:08X})", address);
         LOG_ERROR(Kernel_SVC, "Attempting to wait on kernel address (address={:08X})", address);
         return ResultInvalidCurrentMemory;
         return ResultInvalidCurrentMemory;
     }
     }
@@ -1765,7 +1764,7 @@ static ResultCode SignalToAddress(Core::System& system, VAddr address, Svc::Sign
               address, signal_type, value, count);
               address, signal_type, value, count);
 
 
     // Validate input.
     // Validate input.
-    if (Memory::IsKernelAddress(address)) {
+    if (IsKernelAddress(address)) {
         LOG_ERROR(Kernel_SVC, "Attempting to signal to a kernel address (address={:08X})", address);
         LOG_ERROR(Kernel_SVC, "Attempting to signal to a kernel address (address={:08X})", address);
         return ResultInvalidCurrentMemory;
         return ResultInvalidCurrentMemory;
     }
     }