Files
FEX-Emu--FEX/Source/Tools/FEXLoader/ArchHelpers/WinContext.h
T

72 lines
1.3 KiB
C++

// SPDX-License-Identifier: MIT
#pragma once
#ifdef _WIN32
#include <FEXCore/Utils/LogManager.h>
#include <winnt.h>
namespace FEX::ArchHelpers::Context {
#ifdef _M_ARM_64
static inline uint64_t GetSp(PCONTEXT Context) {
return Context->Sp;
}
static inline uint64_t GetPc(PCONTEXT Context) {
return Context->Pc;
}
static inline void SetSp(PCONTEXT Context, uint64_t val) {
Context->Sp = val;
}
static inline void SetPc(PCONTEXT Context, uint64_t val) {
Context->Pc = val;
}
static inline uint64_t GetState(PCONTEXT Context) {
return Context->X28;
}
static inline void SetState(PCONTEXT Context, uint64_t val) {
Context->X28 = val;
}
static inline uint64_t *GetArmGPRs(PCONTEXT Context) {
return Context->X;
}
#endif
#ifdef _M_X86_64
static inline uint64_t GetSp(PCONTEXT Context) {
return Context->Rsp;
}
static inline uint64_t GetPc(PCONTEXT Context) {
return Context->Rip;
}
static inline void SetSp(PCONTEXT Context, uint64_t val) {
Context->Rsp = val;
}
static inline void SetPc(PCONTEXT Context, uint64_t val) {
Context->Rip = val;
}
static inline uint64_t GetState(PCONTEXT Context) {
return Context->R14;
}
static inline void SetState(PCONTEXT Context, uint64_t val) {
Context->R14 = val;
}
static inline uint64_t *GetArmGPRs(PCONTEXT Context) {
ERROR_AND_DIE_FMT("Not implemented for x86 host");
}
#endif
}
#endif