mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-08-03 11:23:49 +00:00
* Rework guest memory tracking * add unknwon flag * Fix macOS guest address-space reservation
46 lines
1.4 KiB
C++
46 lines
1.4 KiB
C++
#ifndef KYTY_COMMON_VIRTUALMEMORY_H_
|
|
#define KYTY_COMMON_VIRTUALMEMORY_H_
|
|
|
|
#include "common/common.h"
|
|
|
|
namespace Common {
|
|
|
|
namespace VirtualMemory {
|
|
|
|
enum class Mode : uint32_t {
|
|
NoAccess = 0,
|
|
Read = 1,
|
|
Write = 2,
|
|
ReadWrite = Read | Write,
|
|
Execute = 4,
|
|
ExecuteRead = Execute | Read,
|
|
ExecuteWrite = Execute | Write,
|
|
ExecuteReadWrite = Execute | Read | Write,
|
|
};
|
|
|
|
inline bool IsExecute(Mode mode) {
|
|
return (mode == Mode::Execute || mode == Mode::ExecuteRead || mode == Mode::ExecuteWrite ||
|
|
mode == Mode::ExecuteReadWrite);
|
|
}
|
|
|
|
void Init();
|
|
|
|
uint64_t Alloc(uint64_t address, uint64_t size, Mode mode);
|
|
uint64_t AllocAligned(uint64_t address, uint64_t size, Mode mode, uint64_t alignment);
|
|
bool AllocFixed(uint64_t address, uint64_t size, Mode mode);
|
|
bool Commit(uint64_t address, uint64_t size, Mode mode);
|
|
uint64_t Reserve(uint64_t address, uint64_t size);
|
|
uint64_t ReserveAligned(uint64_t address, uint64_t size, uint64_t alignment);
|
|
bool ReserveFixed(uint64_t address, uint64_t size);
|
|
bool Decommit(uint64_t address, uint64_t size);
|
|
bool Free(uint64_t address);
|
|
bool FreeRange(uint64_t address, uint64_t size);
|
|
bool Protect(uint64_t address, uint64_t size, Mode mode, Mode* old_mode = nullptr);
|
|
bool FlushInstructionCache(uint64_t address, uint64_t size);
|
|
|
|
} // namespace VirtualMemory
|
|
|
|
} // namespace Common
|
|
|
|
#endif /* KYTY_COMMON_VIRTUALMEMORY_H_ */
|