FEXCore/OpcodeDispatcher: Fixes syscall instruction on Linux

I forgot on Linux by default we didn't have the syscall instructions
count as block end. Change this so that it counts as block end now.

This has the additional benefit that now the frontend needs to modify
the RIP manually as well which is fine as it's what arm64ec and wow64
does.

Also add back the UnimplementedOp in RDPID that accidentally got caught
up. Also increment DiskCache version as both changes will change
codegen.

Fixes #5942
This commit is contained in:
Ryan Houdek committed 2026-09-10 09:50:07 -07:00
1 parent e431bfe0fa
commit 91bbce5a96
6 files changed
+13 -11

No files matched your search

@@ -887,6 +887,10 @@ void SyscallHandler::HandleSyscall(FEXCore::Core::CpuStateFrame* Frame) {
} else {
HandleSyscallImpl<false>(Frame, JITPC);
}
// Skip past the `syscall` or `int 0x80` instruction. Both of which are 2-bytes.
auto Thread = FEX::HLE::ThreadManager::GetStateObjectFromCPUState(Frame);
Thread->Thread->CurrentFrame->State.rip += 2;
}
#ifdef DEBUG_STRACE