summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/svc.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2021-02-12 17:02:51 -0800
committerGravatar bunnei2021-02-18 16:16:25 -0800
commit65e0178cc09299550aee949d7b89e211017bddee (patch)
tree97abf71a48320fc5628b4946d793191f2fb9dbb0 /src/core/hle/kernel/svc.cpp
parenthle: kernel: Migrate SlabHeap to KSlabHeap. (diff)
downloadyuzu-65e0178cc09299550aee949d7b89e211017bddee.tar.gz
yuzu-65e0178cc09299550aee949d7b89e211017bddee.tar.xz
yuzu-65e0178cc09299550aee949d7b89e211017bddee.zip
hle: kernel: Migrate to KMemoryBlock, KMemoryBlockManager, and others.
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r--src/core/hle/kernel/svc.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 12cfdcf2c..4ffd65d33 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -27,6 +27,7 @@
27#include "core/hle/kernel/k_address_arbiter.h" 27#include "core/hle/kernel/k_address_arbiter.h"
28#include "core/hle/kernel/k_condition_variable.h" 28#include "core/hle/kernel/k_condition_variable.h"
29#include "core/hle/kernel/k_event.h" 29#include "core/hle/kernel/k_event.h"
30#include "core/hle/kernel/k_memory_block.h"
30#include "core/hle/kernel/k_memory_layout.h" 31#include "core/hle/kernel/k_memory_layout.h"
31#include "core/hle/kernel/k_readable_event.h" 32#include "core/hle/kernel/k_readable_event.h"
32#include "core/hle/kernel/k_resource_limit.h" 33#include "core/hle/kernel/k_resource_limit.h"
@@ -38,7 +39,6 @@
38#include "core/hle/kernel/k_thread.h" 39#include "core/hle/kernel/k_thread.h"
39#include "core/hle/kernel/k_writable_event.h" 40#include "core/hle/kernel/k_writable_event.h"
40#include "core/hle/kernel/kernel.h" 41#include "core/hle/kernel/kernel.h"
41#include "core/hle/kernel/memory/memory_block.h"
42#include "core/hle/kernel/memory/page_table.h" 42#include "core/hle/kernel/memory/page_table.h"
43#include "core/hle/kernel/physical_core.h" 43#include "core/hle/kernel/physical_core.h"
44#include "core/hle/kernel/process.h" 44#include "core/hle/kernel/process.h"
@@ -230,9 +230,9 @@ static ResultCode SetMemoryAttribute(Core::System& system, VAddr address, u64 si
230 return ResultInvalidCurrentMemory; 230 return ResultInvalidCurrentMemory;
231 } 231 }
232 232
233 const auto attributes{static_cast<Memory::MemoryAttribute>(mask | attribute)}; 233 const auto attributes{static_cast<MemoryAttribute>(mask | attribute)};
234 if (attributes != static_cast<Memory::MemoryAttribute>(mask) || 234 if (attributes != static_cast<MemoryAttribute>(mask) ||
235 (attributes | Memory::MemoryAttribute::Uncached) != Memory::MemoryAttribute::Uncached) { 235 (attributes | MemoryAttribute::Uncached) != MemoryAttribute::Uncached) {
236 LOG_ERROR(Kernel_SVC, 236 LOG_ERROR(Kernel_SVC,
237 "Memory attribute doesn't match the given mask (Attribute: 0x{:X}, Mask: {:X}", 237 "Memory attribute doesn't match the given mask (Attribute: 0x{:X}, Mask: {:X}",
238 attribute, mask); 238 attribute, mask);
@@ -241,8 +241,8 @@ static ResultCode SetMemoryAttribute(Core::System& system, VAddr address, u64 si
241 241
242 auto& page_table{system.Kernel().CurrentProcess()->PageTable()}; 242 auto& page_table{system.Kernel().CurrentProcess()->PageTable()};
243 243
244 return page_table.SetMemoryAttribute(address, size, static_cast<Memory::MemoryAttribute>(mask), 244 return page_table.SetMemoryAttribute(address, size, static_cast<KMemoryAttribute>(mask),
245 static_cast<Memory::MemoryAttribute>(attribute)); 245 static_cast<KMemoryAttribute>(attribute));
246} 246}
247 247
248static ResultCode SetMemoryAttribute32(Core::System& system, u32 address, u32 size, u32 mask, 248static ResultCode SetMemoryAttribute32(Core::System& system, u32 address, u32 size, u32 mask,
@@ -1231,9 +1231,8 @@ static ResultCode MapSharedMemory(Core::System& system, Handle shared_memory_han
1231 return ResultInvalidCurrentMemory; 1231 return ResultInvalidCurrentMemory;
1232 } 1232 }
1233 1233
1234 const auto permission_type = static_cast<Memory::MemoryPermission>(permissions); 1234 const auto permission_type = static_cast<MemoryPermission>(permissions);
1235 if ((permission_type | Memory::MemoryPermission::Write) != 1235 if ((permission_type | MemoryPermission::Write) != MemoryPermission::ReadWrite) {
1236 Memory::MemoryPermission::ReadAndWrite) {
1237 LOG_ERROR(Kernel_SVC, "Expected Read or ReadWrite permission but got permissions=0x{:08X}", 1236 LOG_ERROR(Kernel_SVC, "Expected Read or ReadWrite permission but got permissions=0x{:08X}",
1238 permissions); 1237 permissions);
1239 return ResultInvalidMemoryPermissions; 1238 return ResultInvalidMemoryPermissions;
@@ -1273,7 +1272,8 @@ static ResultCode MapSharedMemory(Core::System& system, Handle shared_memory_han
1273 return ResultInvalidHandle; 1272 return ResultInvalidHandle;
1274 } 1273 }
1275 1274
1276 return shared_memory->Map(*current_process, addr, size, permission_type); 1275 return shared_memory->Map(*current_process, addr, size,
1276 static_cast<KMemoryPermission>(permission_type));
1277} 1277}
1278 1278
1279static ResultCode MapSharedMemory32(Core::System& system, Handle shared_memory_handle, u32 addr, 1279static ResultCode MapSharedMemory32(Core::System& system, Handle shared_memory_handle, u32 addr,
@@ -1886,9 +1886,8 @@ static ResultCode CreateTransferMemory(Core::System& system, Handle* handle, VAd
1886 return ResultInvalidCurrentMemory; 1886 return ResultInvalidCurrentMemory;
1887 } 1887 }
1888 1888
1889 const auto perms{static_cast<Memory::MemoryPermission>(permissions)}; 1889 const auto perms{static_cast<MemoryPermission>(permissions)};
1890 if (perms > Memory::MemoryPermission::ReadAndWrite || 1890 if (perms > MemoryPermission::ReadWrite || perms == MemoryPermission::Write) {
1891 perms == Memory::MemoryPermission::Write) {
1892 LOG_ERROR(Kernel_SVC, "Invalid memory permissions for transfer memory! (perms={:08X})", 1891 LOG_ERROR(Kernel_SVC, "Invalid memory permissions for transfer memory! (perms={:08X})",
1893 permissions); 1892 permissions);
1894 return ResultInvalidMemoryPermissions; 1893 return ResultInvalidMemoryPermissions;
@@ -1902,7 +1901,8 @@ static ResultCode CreateTransferMemory(Core::System& system, Handle* handle, VAd
1902 LOG_ERROR(Kernel_SVC, "Could not reserve a new transfer memory"); 1901 LOG_ERROR(Kernel_SVC, "Could not reserve a new transfer memory");
1903 return ResultResourceLimitedExceeded; 1902 return ResultResourceLimitedExceeded;
1904 } 1903 }
1905 auto transfer_mem_handle = TransferMemory::Create(kernel, system.Memory(), addr, size, perms); 1904 auto transfer_mem_handle = TransferMemory::Create(kernel, system.Memory(), addr, size,
1905 static_cast<KMemoryPermission>(perms));
1906 1906
1907 if (const auto reserve_result{transfer_mem_handle->Reserve()}; reserve_result.IsError()) { 1907 if (const auto reserve_result{transfer_mem_handle->Reserve()}; reserve_result.IsError()) {
1908 return reserve_result; 1908 return reserve_result;