aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs')
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs168
1 files changed, 145 insertions, 23 deletions
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs
index 273b58e5..da6fac63 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs
@@ -5,35 +5,155 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
[Flags]
enum MemoryState : uint
{
- Unmapped = 0x00000000,
- Io = 0x00002001,
- Normal = 0x00042002,
- CodeStatic = 0x00DC7E03,
- CodeMutable = 0x03FEBD04,
- Heap = 0x037EBD05,
- SharedMemory = 0x00402006,
- ModCodeStatic = 0x00DD7E08,
- ModCodeMutable = 0x03FFBD09,
- IpcBuffer0 = 0x005C3C0A,
- Stack = 0x005C3C0B,
- ThreadLocal = 0x0040200C,
- TransferMemoryIsolated = 0x015C3C0D,
- TransferMemory = 0x005C380E,
- ProcessMemory = 0x0040380F,
- Reserved = 0x00000010,
- IpcBuffer1 = 0x005C3811,
- IpcBuffer3 = 0x004C2812,
- KernelStack = 0x00002013,
- CodeReadOnly = 0x00402214,
- CodeWritable = 0x00402015,
- UserMask = 0xff,
- Mask = 0xffffffff,
+ Unmapped = 0x0,
+ Io = Mapped | 0x1,
+ Normal = Mapped | QueryPhysicalAddressAllowed | 0x2,
+ CodeStatic = ForceReadWritableByDebugSyscalls |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ ProcessPermissionChangeAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ MapProcessAllowed |
+ LinearMapped |
+ 0x3,
+ CodeMutable = PermissionChangeAllowed |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ MapAllowed |
+ TransferMemoryAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IpcBufferAllowed |
+ IsPoolAllocated |
+ MapProcessAllowed |
+ AttributeChangeAllowed |
+ CodeMemoryAllowed |
+ LinearMapped |
+ PermissionLockAllowed |
+ 0x4,
+ Heap = PermissionChangeAllowed |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ MapAllowed |
+ TransferMemoryAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IpcBufferAllowed |
+ IsPoolAllocated |
+ AttributeChangeAllowed |
+ CodeMemoryAllowed |
+ LinearMapped |
+ 0x5,
+ SharedMemory = Mapped | IsPoolAllocated | LinearMapped | 0x6,
+ ModCodeStatic = ForceReadWritableByDebugSyscalls |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ ProcessPermissionChangeAllowed |
+ UnmapProcessCodeMemoryAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ MapProcessAllowed |
+ LinearMapped |
+ 0x8,
+ ModCodeMutable = PermissionChangeAllowed |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ MapAllowed |
+ UnmapProcessCodeMemoryAllowed |
+ TransferMemoryAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IpcBufferAllowed |
+ IsPoolAllocated |
+ MapProcessAllowed |
+ AttributeChangeAllowed |
+ CodeMemoryAllowed |
+ LinearMapped |
+ PermissionLockAllowed |
+ 0x9,
+ IpcBuffer0 = IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ LinearMapped |
+ 0xA,
+ Stack = IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ LinearMapped |
+ 0xB,
+ ThreadLocal = Mapped | IsPoolAllocated | LinearMapped | 0xC,
+ TransferMemoryIsolated = IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ AttributeChangeAllowed |
+ LinearMapped |
+ 0xD,
+ TransferMemory = IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ LinearMapped |
+ 0xE,
+ ProcessMemory = IpcSendAllowedType3 | IpcSendAllowedType1 | Mapped | IsPoolAllocated | LinearMapped | 0xF,
+ Reserved = 0x10,
+ IpcBuffer1 = IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ LinearMapped |
+ 0x11,
+ IpcBuffer3 = IpcSendAllowedType3 | Mapped | QueryPhysicalAddressAllowed | MapDeviceAllowed | IsPoolAllocated | LinearMapped | 0x12,
+ KernelStack = Mapped | 0x13,
+ CodeReadOnly = ForceReadWritableByDebugSyscalls | Mapped | IsPoolAllocated | LinearMapped | 0x14,
+ CodeWritable = Mapped | IsPoolAllocated | LinearMapped | 0x15,
+ UserMask = 0xFF,
+ Mask = 0xFFFFFFFF,
PermissionChangeAllowed = 1 << 8,
ForceReadWritableByDebugSyscalls = 1 << 9,
IpcSendAllowedType0 = 1 << 10,
IpcSendAllowedType3 = 1 << 11,
IpcSendAllowedType1 = 1 << 12,
+ Mapped = 1 << 13,
ProcessPermissionChangeAllowed = 1 << 14,
MapAllowed = 1 << 15,
UnmapProcessCodeMemoryAllowed = 1 << 16,
@@ -46,5 +166,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
MapProcessAllowed = 1 << 23,
AttributeChangeAllowed = 1 << 24,
CodeMemoryAllowed = 1 << 25,
+ LinearMapped = 1 << 26,
+ PermissionLockAllowed = 1 << 27,
}
}