summaryrefslogtreecommitdiff
path: root/src/core/hle/svc.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2014-07-05 10:22:03 -0400
committerGravatar bunnei2014-07-05 10:24:54 -0400
commit7ff92c36ed70e75a54d8a15a7806ab9be34b3168 (patch)
treefe2d322dc00edc55786956e5c94588205ae332b6 /src/core/hle/svc.cpp
parentMemory: Removed deprecated MapBlock_Shared function. (diff)
downloadyuzu-7ff92c36ed70e75a54d8a15a7806ab9be34b3168.tar.gz
yuzu-7ff92c36ed70e75a54d8a15a7806ab9be34b3168.tar.xz
yuzu-7ff92c36ed70e75a54d8a15a7806ab9be34b3168.zip
SharedMemory: Updated MapSharedMemory to use an enum for permissions.
- Also added some safety checks to MapSharedMemory.
Diffstat (limited to 'src/core/hle/svc.cpp')
-rw-r--r--src/core/hle/svc.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp
index 746d24a70..9130d77ec 100644
--- a/src/core/hle/svc.cpp
+++ b/src/core/hle/svc.cpp
@@ -29,11 +29,6 @@ enum ControlMemoryOperation {
29 MEMORY_OPERATION_GSP_HEAP = 0x00010003, 29 MEMORY_OPERATION_GSP_HEAP = 0x00010003,
30}; 30};
31 31
32enum MapMemoryPermission {
33 MEMORY_PERMISSION_UNMAP = 0x00000000,
34 MEMORY_PERMISSION_NORMAL = 0x00000001,
35};
36
37/// Map application or GSP heap memory 32/// Map application or GSP heap memory
38Result ControlMemory(u32* out_addr, u32 operation, u32 addr0, u32 addr1, u32 size, u32 permissions) { 33Result ControlMemory(u32* out_addr, u32 operation, u32 addr0, u32 addr1, u32 size, u32 permissions) {
39 DEBUG_LOG(SVC,"called operation=0x%08X, addr0=0x%08X, addr1=0x%08X, size=%08X, permissions=0x%08X", 34 DEBUG_LOG(SVC,"called operation=0x%08X, addr0=0x%08X, addr1=0x%08X, size=%08X, permissions=0x%08X",
@@ -62,11 +57,15 @@ Result ControlMemory(u32* out_addr, u32 operation, u32 addr0, u32 addr1, u32 siz
62Result MapMemoryBlock(Handle handle, u32 addr, u32 permissions, u32 other_permissions) { 57Result MapMemoryBlock(Handle handle, u32 addr, u32 permissions, u32 other_permissions) {
63 DEBUG_LOG(SVC, "called memblock=0x08X, addr=0x%08X, mypermissions=0x%08X, otherpermission=%d", 58 DEBUG_LOG(SVC, "called memblock=0x08X, addr=0x%08X, mypermissions=0x%08X, otherpermission=%d",
64 handle, addr, permissions, other_permissions); 59 handle, addr, permissions, other_permissions);
65 switch (permissions) { 60
66 case MEMORY_PERMISSION_NORMAL: 61 Kernel::MemoryPermission permissions_type = static_cast<Kernel::MemoryPermission>(permissions);
67 case MEMORY_PERMISSION_NORMAL + 1: 62 switch (permissions_type) {
68 case MEMORY_PERMISSION_NORMAL + 2: 63 case Kernel::MemoryPermission::Read:
69 Kernel::MapSharedMemory(handle, addr, permissions, other_permissions); 64 case Kernel::MemoryPermission::Write:
65 case Kernel::MemoryPermission::ReadWrite:
66 case Kernel::MemoryPermission::DontCare:
67 Kernel::MapSharedMemory(handle, addr, permissions_type,
68 static_cast<Kernel::MemoryPermission>(other_permissions));
70 break; 69 break;
71 default: 70 default:
72 ERROR_LOG(OSHLE, "unknown permissions=0x%08X", permissions); 71 ERROR_LOG(OSHLE, "unknown permissions=0x%08X", permissions);