aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryPermission.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryPermission.cs')
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryPermission.cs46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryPermission.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryPermission.cs
new file mode 100644
index 00000000..32734574
--- /dev/null
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryPermission.cs
@@ -0,0 +1,46 @@
+using Ryujinx.Memory;
+using System;
+
+namespace Ryujinx.HLE.HOS.Kernel.Memory
+{
+ [Flags]
+ enum KMemoryPermission : uint
+ {
+ None = 0,
+ UserMask = Read | Write | Execute,
+ Mask = uint.MaxValue,
+
+ Read = 1 << 0,
+ Write = 1 << 1,
+ Execute = 1 << 2,
+ DontCare = 1 << 28,
+
+ ReadAndWrite = Read | Write,
+ ReadAndExecute = Read | Execute,
+ }
+
+ static class KMemoryPermissionExtensions
+ {
+ public static MemoryPermission Convert(this KMemoryPermission permission)
+ {
+ MemoryPermission output = MemoryPermission.None;
+
+ if (permission.HasFlag(KMemoryPermission.Read))
+ {
+ output = MemoryPermission.Read;
+ }
+
+ if (permission.HasFlag(KMemoryPermission.Write))
+ {
+ output |= MemoryPermission.Write;
+ }
+
+ if (permission.HasFlag(KMemoryPermission.Execute))
+ {
+ output |= MemoryPermission.Execute;
+ }
+
+ return output;
+ }
+ }
+}