Merge pull request #4728 from bylaws/monohacks

Implement mono specific hacks
This commit is contained in:
Ryan Houdek authored and GitHub committed 2025-08-06 15:51:35 -07:00
commit aa979e4bc7
52 files changed
+14801 -14503

No files matched your search

+5
View File
@@ -110,6 +110,7 @@ public:
FEX_DEFAULT_VISIBILITY virtual bool IsAddressInCurrentBlock(FEXCore::Core::InternalThreadState* Thread, uint64_t Address, uint64_t Size) = 0;
FEX_DEFAULT_VISIBILITY virtual bool IsCurrentBlockSingleInst(FEXCore::Core::InternalThreadState* Thread) = 0;
FEX_DEFAULT_VISIBILITY virtual uint64_t GetGuestBlockEntry(FEXCore::Core::InternalThreadState* Thread) = 0;
///< State reconstruction helpers
///< Reconstructs the guest RIP from the passed in thread context and related Host PC.
@@ -227,6 +228,10 @@ public:
FEX_DEFAULT_VISIBILITY virtual void AddForceTSOInformation(const IntervalList<uint64_t>& ValidRanges, fextl::set<uint64_t>&& Instructions) = 0;
FEX_DEFAULT_VISIBILITY virtual void RemoveForceTSOInformation(uint64_t Address, uint64_t Size) = 0;
FEX_DEFAULT_VISIBILITY virtual void MarkMonoDetected() = 0;
FEX_DEFAULT_VISIBILITY virtual void MarkMonoBackpatcherBlock(uint64_t BlockEntry) = 0;
private:
};
+1
View File
@@ -305,6 +305,7 @@ struct JITPointers {
uint64_t SyscallHandlerObj {};
uint64_t SyscallHandlerFunc {};
uint64_t ExitFunctionLink {};
uint64_t MonoBackpatcherWrite {};
// Handles returning/calling ARM64EC code from the JIT, expects the target PC in TMP3
uint64_t ExitFunctionEC {};
@@ -78,6 +78,7 @@ public:
return OSABI;
}
virtual void MarkGuestExecutableRange(FEXCore::Core::InternalThreadState* Thread, uint64_t Start, uint64_t Length) {}
virtual void InvalidateGuestCodeRange(FEXCore::Core::InternalThreadState* Thread, uint64_t Start, uint64_t Length) {}
virtual void MarkOvercommitRange(uint64_t Start, uint64_t Length) {}
virtual void UnmarkOvercommitRange(uint64_t Start, uint64_t Length) {}
virtual ExecutableRangeInfo QueryGuestExecutableRange(FEXCore::Core::InternalThreadState* Thread, uint64_t Address) = 0;