diff options
| author | 2018-02-03 13:36:54 -0500 | |
|---|---|---|
| committer | 2018-02-03 13:36:54 -0500 | |
| commit | 647364db8fa7792b640a035d410feb12e3fde848 (patch) | |
| tree | 0fafe09f290bbb8872aaa0c2817e006c1acfe337 /src | |
| parent | ArbitrateLock: Assert that requesting_thread is current_thread. (diff) | |
| download | yuzu-647364db8fa7792b640a035d410feb12e3fde848.tar.gz yuzu-647364db8fa7792b640a035d410feb12e3fde848.tar.xz yuzu-647364db8fa7792b640a035d410feb12e3fde848.zip | |
svc: SharedMemory size should be 64-bits and cleanup.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/kernel/shared_memory.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/shared_memory.h | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 16 |
3 files changed, 11 insertions, 11 deletions
diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index f8aa429dc..835fc710b 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp | |||
| @@ -14,7 +14,7 @@ namespace Kernel { | |||
| 14 | SharedMemory::SharedMemory() {} | 14 | SharedMemory::SharedMemory() {} |
| 15 | SharedMemory::~SharedMemory() {} | 15 | SharedMemory::~SharedMemory() {} |
| 16 | 16 | ||
| 17 | SharedPtr<SharedMemory> SharedMemory::Create(SharedPtr<Process> owner_process, u32 size, | 17 | SharedPtr<SharedMemory> SharedMemory::Create(SharedPtr<Process> owner_process, u64 size, |
| 18 | MemoryPermission permissions, | 18 | MemoryPermission permissions, |
| 19 | MemoryPermission other_permissions, VAddr address, | 19 | MemoryPermission other_permissions, VAddr address, |
| 20 | MemoryRegion region, std::string name) { | 20 | MemoryRegion region, std::string name) { |
diff --git a/src/core/hle/kernel/shared_memory.h b/src/core/hle/kernel/shared_memory.h index e948819c0..86f818e90 100644 --- a/src/core/hle/kernel/shared_memory.h +++ b/src/core/hle/kernel/shared_memory.h | |||
| @@ -39,7 +39,7 @@ public: | |||
| 39 | * linear heap. | 39 | * linear heap. |
| 40 | * @param name Optional object name, used for debugging purposes. | 40 | * @param name Optional object name, used for debugging purposes. |
| 41 | */ | 41 | */ |
| 42 | static SharedPtr<SharedMemory> Create(SharedPtr<Process> owner_process, u32 size, | 42 | static SharedPtr<SharedMemory> Create(SharedPtr<Process> owner_process, u64 size, |
| 43 | MemoryPermission permissions, | 43 | MemoryPermission permissions, |
| 44 | MemoryPermission other_permissions, VAddr address = 0, | 44 | MemoryPermission other_permissions, VAddr address = 0, |
| 45 | MemoryRegion region = MemoryRegion::BASE, | 45 | MemoryRegion region = MemoryRegion::BASE, |
| @@ -116,7 +116,7 @@ public: | |||
| 116 | /// Offset into the backing block for this shared memory. | 116 | /// Offset into the backing block for this shared memory. |
| 117 | size_t backing_block_offset; | 117 | size_t backing_block_offset; |
| 118 | /// Size of the memory block. Page-aligned. | 118 | /// Size of the memory block. Page-aligned. |
| 119 | u32 size; | 119 | u64 size; |
| 120 | /// Permission restrictions applied to the process which created the block. | 120 | /// Permission restrictions applied to the process which created the block. |
| 121 | MemoryPermission permissions; | 121 | MemoryPermission permissions; |
| 122 | /// Permission restrictions applied to other processes mapping the block. | 122 | /// Permission restrictions applied to other processes mapping the block. |
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index f516927cd..4e395ed31 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -416,8 +416,7 @@ static ResultCode MapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 s | |||
| 416 | "called, shared_memory_handle=0x%08X, addr=0x%llx, size=0x%llx, permissions=0x%08X", | 416 | "called, shared_memory_handle=0x%08X, addr=0x%llx, size=0x%llx, permissions=0x%08X", |
| 417 | shared_memory_handle, addr, size, permissions); | 417 | shared_memory_handle, addr, size, permissions); |
| 418 | 418 | ||
| 419 | SharedPtr<SharedMemory> shared_memory = | 419 | SharedPtr<SharedMemory> shared_memory = g_handle_table.Get<SharedMemory>(shared_memory_handle); |
| 420 | Kernel::g_handle_table.Get<SharedMemory>(shared_memory_handle); | ||
| 421 | if (!shared_memory) { | 420 | if (!shared_memory) { |
| 422 | return ERR_INVALID_HANDLE; | 421 | return ERR_INVALID_HANDLE; |
| 423 | } | 422 | } |
| @@ -432,7 +431,7 @@ static ResultCode MapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 s | |||
| 432 | case MemoryPermission::WriteExecute: | 431 | case MemoryPermission::WriteExecute: |
| 433 | case MemoryPermission::ReadWriteExecute: | 432 | case MemoryPermission::ReadWriteExecute: |
| 434 | case MemoryPermission::DontCare: | 433 | case MemoryPermission::DontCare: |
| 435 | return shared_memory->Map(Kernel::g_current_process.get(), addr, permissions_type, | 434 | return shared_memory->Map(g_current_process.get(), addr, permissions_type, |
| 436 | MemoryPermission::DontCare); | 435 | MemoryPermission::DontCare); |
| 437 | default: | 436 | default: |
| 438 | LOG_ERROR(Kernel_SVC, "unknown permissions=0x%08X", permissions); | 437 | LOG_ERROR(Kernel_SVC, "unknown permissions=0x%08X", permissions); |
| @@ -739,13 +738,14 @@ static ResultCode SetThreadCoreMask(u64, u64, u64) { | |||
| 739 | return RESULT_SUCCESS; | 738 | return RESULT_SUCCESS; |
| 740 | } | 739 | } |
| 741 | 740 | ||
| 742 | static ResultCode CreateSharedMemory(Handle* handle, u64 sz, u32 local_permissions, | 741 | static ResultCode CreateSharedMemory(Handle* handle, u64 size, u32 local_permissions, |
| 743 | u32 remote_permissions) { | 742 | u32 remote_permissions) { |
| 744 | LOG_TRACE(Kernel_SVC, "called, sz=0x%llx, localPerms=0x%08x, remotePerms=0x%08x", sz, | 743 | LOG_TRACE(Kernel_SVC, "called, size=0x%llx, localPerms=0x%08x, remotePerms=0x%08x", size, |
| 745 | local_permissions, remote_permissions); | 744 | local_permissions, remote_permissions); |
| 746 | auto sharedMemHandle = SharedMemory::Create( | 745 | auto sharedMemHandle = |
| 747 | g_handle_table.Get<Process>(KernelHandle::CurrentProcess), sz, | 746 | SharedMemory::Create(g_handle_table.Get<Process>(KernelHandle::CurrentProcess), size, |
| 748 | (Kernel::MemoryPermission)local_permissions, (Kernel::MemoryPermission)remote_permissions); | 747 | static_cast<MemoryPermission>(local_permissions), |
| 748 | static_cast<MemoryPermission>(remote_permissions)); | ||
| 749 | 749 | ||
| 750 | CASCADE_RESULT(*handle, g_handle_table.Create(sharedMemHandle)); | 750 | CASCADE_RESULT(*handle, g_handle_table.Create(sharedMemHandle)); |
| 751 | return RESULT_SUCCESS; | 751 | return RESULT_SUCCESS; |