mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-12 22:00:41 +02:00
ARM64EC: Implement remaining notification callbacks
This commit is contained in:
1 parent
27973d5637
commit
115fbb5039
3 files changed
+33
-3
No files matched your search
@@ -588,6 +588,10 @@ void NotifyMemoryProtect(void* Address, SIZE_T Size, ULONG NewProt, BOOL After,
|
||||
InvalidationTracker->HandleMemoryProtectionNotification(reinterpret_cast<uint64_t>(Address), static_cast<uint64_t>(Size), NewProt);
|
||||
}
|
||||
|
||||
NTSTATUS NotifyMapViewOfSection(void* Unk1, void* Address, void* Unk2, SIZE_T Size, ULONG AllocType, ULONG Prot) {
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void NotifyUnmapViewOfSection(void* Address, BOOL After, NTSTATUS Status) {
|
||||
if (!InvalidationTracker || !GetCPUArea().ThreadState()) {
|
||||
return;
|
||||
@@ -601,6 +605,15 @@ void NotifyUnmapViewOfSection(void* Address, BOOL After, NTSTATUS Status) {
|
||||
InvalidationTracker->InvalidateContainingSection(reinterpret_cast<uint64_t>(Address), true);
|
||||
}
|
||||
|
||||
void FlushInstructionCacheHeavy(const void* Address, SIZE_T Size) {
|
||||
if (!InvalidationTracker || !GetCPUArea().ThreadState()) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::scoped_lock Lock(ThreadCreationMutex);
|
||||
InvalidationTracker->InvalidateAlignedInterval(reinterpret_cast<uint64_t>(Address), static_cast<uint64_t>(Size), false);
|
||||
}
|
||||
|
||||
void BTCpu64FlushInstructionCache(const void* Address, SIZE_T Size) {
|
||||
if (!InvalidationTracker || !GetCPUArea().ThreadState()) {
|
||||
return;
|
||||
@@ -610,6 +623,17 @@ void BTCpu64FlushInstructionCache(const void* Address, SIZE_T Size) {
|
||||
InvalidationTracker->InvalidateAlignedInterval(reinterpret_cast<uint64_t>(Address), static_cast<uint64_t>(Size), false);
|
||||
}
|
||||
|
||||
void BTCpu64NotifyMemoryDirty(void* Address, SIZE_T Size) {
|
||||
if (!InvalidationTracker || !GetCPUArea().ThreadState()) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::scoped_lock Lock(ThreadCreationMutex);
|
||||
InvalidationTracker->InvalidateAlignedInterval(reinterpret_cast<uint64_t>(Address), static_cast<uint64_t>(Size), false);
|
||||
}
|
||||
|
||||
void BTCpu64NotifyReadFile(HANDLE Handle, void* Address, SIZE_T Size, BOOL After, NTSTATUS Status) {}
|
||||
|
||||
NTSTATUS ThreadInit() {
|
||||
static constexpr size_t EmulatorStackSize = 0x40000;
|
||||
const uint64_t EmulatorStack = reinterpret_cast<uint64_t>(::VirtualAlloc(nullptr, EmulatorStackSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE));
|
||||
|
||||
Reference in new issue
Block a user