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

Kernel:Add missing permissions in shared memory & svc

purpasmart96 11 лет назад
Родитель
Сommit
66431bceda
2 измененных файлов с 13 добавлено и 5 удалено
  1. 9 5
      src/core/hle/kernel/shared_memory.h
  2. 4 0
      src/core/hle/svc.cpp

+ 9 - 5
src/core/hle/kernel/shared_memory.h

@@ -12,11 +12,15 @@ namespace Kernel {
 
 
 /// Permissions for mapped shared memory blocks
 /// Permissions for mapped shared memory blocks
 enum class MemoryPermission : u32 {
 enum class MemoryPermission : u32 {
-    None        = 0,
-    Read        = (1u <<  0),
-    Write       = (1u <<  1),
-    ReadWrite   = (Read | Write),
-    DontCare    = (1u << 28)
+    None             = 0,
+    Read             = (1u <<  0),
+    Write            = (1u <<  1),
+    ReadWrite        = (Read | Write),
+    Execute          = (1u <<  2),
+    ReadExecute      = (Read | Execute),
+    WriteExecute     = (Write | Execute),
+    ReadWriteExecute = (Read | Write | Execute),
+    DontCare         = (1u << 28)
 };
 };
 
 
 /**
 /**

+ 4 - 0
src/core/hle/svc.cpp

@@ -62,6 +62,10 @@ Result MapMemoryBlock(Handle handle, u32 addr, u32 permissions, u32 other_permis
     case Kernel::MemoryPermission::Read:
     case Kernel::MemoryPermission::Read:
     case Kernel::MemoryPermission::Write:
     case Kernel::MemoryPermission::Write:
     case Kernel::MemoryPermission::ReadWrite:
     case Kernel::MemoryPermission::ReadWrite:
+    case Kernel::MemoryPermission::Execute:
+    case Kernel::MemoryPermission::ReadExecute:
+    case Kernel::MemoryPermission::WriteExecute:
+    case Kernel::MemoryPermission::ReadWriteExecute:
     case Kernel::MemoryPermission::DontCare:
     case Kernel::MemoryPermission::DontCare:
         Kernel::MapSharedMemory(handle, addr, permissions_type, 
         Kernel::MapSharedMemory(handle, addr, permissions_type, 
             static_cast<Kernel::MemoryPermission>(other_permissions));
             static_cast<Kernel::MemoryPermission>(other_permissions));