|
|
|
@ -0,0 +1,68 @@ |
|
|
|
// Copyright 2020 yuzu emulator team |
|
|
|
// Licensed under GPLv2 or any later version |
|
|
|
// Refer to the license.txt file included. |
|
|
|
|
|
|
|
#pragma once |
|
|
|
|
|
|
|
#include "common/common_funcs.h" |
|
|
|
#include "common/common_types.h" |
|
|
|
|
|
|
|
namespace Kernel::Svc { |
|
|
|
|
|
|
|
enum class MemoryState : u32 { |
|
|
|
Free = 0x00, |
|
|
|
Io = 0x01, |
|
|
|
Static = 0x02, |
|
|
|
Code = 0x03, |
|
|
|
CodeData = 0x04, |
|
|
|
Normal = 0x05, |
|
|
|
Shared = 0x06, |
|
|
|
Alias = 0x07, |
|
|
|
AliasCode = 0x08, |
|
|
|
AliasCodeData = 0x09, |
|
|
|
Ipc = 0x0A, |
|
|
|
Stack = 0x0B, |
|
|
|
ThreadLocal = 0x0C, |
|
|
|
Transfered = 0x0D, |
|
|
|
SharedTransfered = 0x0E, |
|
|
|
SharedCode = 0x0F, |
|
|
|
Inaccessible = 0x10, |
|
|
|
NonSecureIpc = 0x11, |
|
|
|
NonDeviceIpc = 0x12, |
|
|
|
Kernel = 0x13, |
|
|
|
GeneratedCode = 0x14, |
|
|
|
CodeOut = 0x15, |
|
|
|
}; |
|
|
|
DECLARE_ENUM_FLAG_OPERATORS(MemoryState); |
|
|
|
|
|
|
|
enum class MemoryAttribute : u32 { |
|
|
|
Locked = (1 << 0), |
|
|
|
IpcLocked = (1 << 1), |
|
|
|
DeviceShared = (1 << 2), |
|
|
|
Uncached = (1 << 3), |
|
|
|
}; |
|
|
|
DECLARE_ENUM_FLAG_OPERATORS(MemoryAttribute); |
|
|
|
|
|
|
|
enum class MemoryPermission : u32 { |
|
|
|
None = (0 << 0), |
|
|
|
Read = (1 << 0), |
|
|
|
Write = (1 << 1), |
|
|
|
Execute = (1 << 2), |
|
|
|
ReadWrite = Read | Write, |
|
|
|
ReadExecute = Read | Execute, |
|
|
|
DontCare = (1 << 28), |
|
|
|
}; |
|
|
|
DECLARE_ENUM_FLAG_OPERATORS(MemoryPermission); |
|
|
|
|
|
|
|
struct MemoryInfo { |
|
|
|
u64 addr{}; |
|
|
|
u64 size{}; |
|
|
|
MemoryState state{}; |
|
|
|
MemoryAttribute attr{}; |
|
|
|
MemoryPermission perm{}; |
|
|
|
u32 ipc_refcount{}; |
|
|
|
u32 device_refcount{}; |
|
|
|
u32 padding{}; |
|
|
|
}; |
|
|
|
|
|
|
|
} // namespace Kernel::Svc |