mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 20:00:16 +02:00
43 lines
1.0 KiB
C++
43 lines
1.0 KiB
C++
// SPDX-License-Identifier: MIT
|
|
#pragma once
|
|
|
|
#include <FEXCore/IR/IR.h>
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <span>
|
|
|
|
namespace FEXCore::Core {
|
|
struct InternalThreadState;
|
|
}
|
|
|
|
namespace FEX::HLE {
|
|
class SyscallHandler;
|
|
}
|
|
|
|
namespace FEX::VDSO {
|
|
struct VDSOMapping {
|
|
void* VDSOBase {};
|
|
size_t VDSOSize {};
|
|
void* X86GeneratedCodePtr {};
|
|
size_t X86GeneratedCodeSize {};
|
|
|
|
explicit operator bool() const {
|
|
return VDSOBase != nullptr;
|
|
}
|
|
};
|
|
|
|
struct VDSOEntrypoints {
|
|
void* VDSO_kernel_sigreturn;
|
|
void* VDSO_kernel_rt_sigreturn;
|
|
void* VDSO_FEX_CallbackRET;
|
|
};
|
|
VDSOMapping LoadVDSOThunks(FEXCore::Core::InternalThreadState* Thread, bool Is64Bit, FEX::HLE::SyscallHandler* const Handler);
|
|
void UnloadVDSOMapping(FEXCore::Core::InternalThreadState* Thread, FEX::HLE::SyscallHandler* const Handler, const VDSOMapping& Mapping);
|
|
|
|
uint64_t GetVSyscallEntry(const void* VDSOBase);
|
|
|
|
const std::span<FEXCore::IR::ThunkDefinition> GetVDSOThunkDefinitions(bool Is64Bit);
|
|
const VDSOEntrypoints& GetVDSOSymbols();
|
|
} // namespace FEX::VDSO
|