diff options
| author | 2014-07-05 10:22:03 -0400 | |
|---|---|---|
| committer | 2014-07-05 10:24:54 -0400 | |
| commit | 7ff92c36ed70e75a54d8a15a7806ab9be34b3168 (patch) | |
| tree | fe2d322dc00edc55786956e5c94588205ae332b6 /src/core/hle/svc.cpp | |
| parent | Memory: Removed deprecated MapBlock_Shared function. (diff) | |
| download | yuzu-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.cpp | 19 |
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 | ||
| 32 | enum 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 |
| 38 | Result ControlMemory(u32* out_addr, u32 operation, u32 addr0, u32 addr1, u32 size, u32 permissions) { | 33 | Result 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 | |||
| 62 | Result MapMemoryBlock(Handle handle, u32 addr, u32 permissions, u32 other_permissions) { | 57 | Result 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); |