|
|
@@ -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,
|
|
|
}
|
|
|
}
|