KMemoryPermission.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Ryujinx.Memory;
  2. using System;
  3. namespace Ryujinx.HLE.HOS.Kernel.Memory
  4. {
  5. [Flags]
  6. enum KMemoryPermission : uint
  7. {
  8. None = 0,
  9. UserMask = Read | Write | Execute,
  10. Mask = uint.MaxValue,
  11. Read = 1 << 0,
  12. Write = 1 << 1,
  13. Execute = 1 << 2,
  14. DontCare = 1 << 28,
  15. ReadAndWrite = Read | Write,
  16. ReadAndExecute = Read | Execute,
  17. }
  18. static class KMemoryPermissionExtensions
  19. {
  20. public static MemoryPermission Convert(this KMemoryPermission permission)
  21. {
  22. MemoryPermission output = MemoryPermission.None;
  23. if (permission.HasFlag(KMemoryPermission.Read))
  24. {
  25. output = MemoryPermission.Read;
  26. }
  27. if (permission.HasFlag(KMemoryPermission.Write))
  28. {
  29. output |= MemoryPermission.Write;
  30. }
  31. if (permission.HasFlag(KMemoryPermission.Execute))
  32. {
  33. output |= MemoryPermission.Execute;
  34. }
  35. return output;
  36. }
  37. }
  38. }